根据inputHidden字段的值,某些功能应该在javascript端执行。
<h:inputHidden id="onlyCaseSensitive" value="#{testBean.isPageAllowed()}"/>
执行javascript后,应用程序会抛出错误 属性不是qritable集合操作的非法语法
答案 0 :(得分:1)
h:inputHidde
的值应该指向使用getter和setter支持bean的属性。因此,可能在您提交页面时,访问setter字段时出现问题。
答案 1 :(得分:1)
应用程序抛出错误属性不可写非设置操作语法
您的EL表达式#{}
无效。它必须作为值表达式进行求值,而不是作为方法表达式求值。无法对给定的方法表达式执行setter方法调用,而在提交JSF表单时则需要这样做。您需要删除is
前缀和这些括号,使其成为有效的值表达式。
<h:inputHidden id="onlyCaseSensitive" value="#{testBean.pageAllowed}"/>
这需要public boolean isPageAllowed()
getter方法和public void setPageAllowed(boolean pageAllowed)
setter方法。
如果实际只需要将JSF托管bean属性用作JavaScript变量,那么你根本不应该将它作为隐藏输入呈现,而只是让JSF呈现一个完整的JavaScript变量而不需要混淆隐藏的输入和HTML DOM遍历。
E.g。
<script>
var onlyCaseSensitive = #{testBean.pageAllowed};
</script>
这将最终出现在JSF生成的HTML输出中,如下所示(右键单击页面并执行查看源以查看它):
<script>
var onlyCaseSensitive = true;
</script>