添加方法以输入隐藏字段值

时间:2013-01-16 20:10:19

标签: javascript jsf-2

根据inputHidden字段的值,某些功能应该在javascript端执行。

<h:inputHidden id="onlyCaseSensitive" value="#{testBean.isPageAllowed()}"/> 

执行javascript后,应用程序会抛出错误 属性不是qritable集合操作的非法语法

2 个答案:

答案 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>