我在使用 AngularJS + Struts 2 时遇到了一个奇怪的错误。
我有一个Java对象form
与 boolean
名为 paid
的属性.
当我写的时候:
<div class="col-sm-10 form-checkbox">
<s:checkbox name="xxxxx" ng-model="model"
ng-init="model = <s:property value = '%{form.paid}' />"
theme="simple" />
</div>
我收到 FireBug 提示 AngularJS 语法解析器错误,该错误将我引导至此页面:
提示表达式错误。
如果我写:
<div class="col-sm-10 form-checkbox">
<s:checkbox name="xxxxx" ng-model="model"
ng-init="%{form.paid}"
theme="simple" />
</div>
没有报告错误。我猜这是因为 Struts 标签以 <
开头,这在 Angular 中不受欢迎。
但是,这一行不会报告错误:
<select ng-model="estadoId"
ng-init="estadoId=<s:property value='%{form.estadoId}'/>"
name="form.estadoId" id="form.estadoId"
value="<s:property value='%{form.estadoId}' />" >
所以,AngularJS 正在提示 <>
在Struts 2 中?或者,我也不允许使用 <s:...>
在另一个里面<s:...>
?如果是后者,为什么 Complaning Angular 而不是 Struts 2?
最佳答案
在第一个代码段中,您嵌套了 Struts 标记,这是一个语法错误:
<s:checkbox name="xxxxx"
ng-model="model"
ng-init="model = <s:property value = '%{form.paid}' />"
theme="simple" />
在第二个中,您使用 OGNL 做得很好,但是您省略了 model =
部分:
<s:checkbox name="xxxxx"
ng-model="model"
ng-init="%{form.paid}"
theme="simple" />
正确的版本是两者的混合:
<s:checkbox name="xxxxx"
ng-model="model"
ng-init="model = %{form.paid}"
theme="simple" />
否则,您可以使用原始 HTML 标记(如 <select>
示例中所示,这是一个标准 HTML 标记,而不是 <s:select>
,因此不会发生标记嵌套):
<input type="check" name="xxxxx"
ng-model="model"
ng-init="model = %{form.paid}" />
注意:在这种情况下,您应该在每个复选框下创建一个隐藏参数来模拟 <s:checkbox>
标记行为并将 Checkbox Interceptor快乐。
关于html - 如何修复 Struts 2 <s :checkbox> tag? 中的 Angular 语法解析器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31835226/