如何获取h:inputHidden元素的值,其值使用jquery javascript计算

use*_*526 4 javascript jsf-2

我的要求是当用户单击提交按钮时,计算的新值应存储在inputHidden字段值中.我在jQuery中编写函数来计算inputHidden字段的新值,当单击提交按钮时.新值将分配给inputHidden字段值.但问题是,在使用hidden.getValue()检索辅助bean中的值时,它返回null值.

    jQuery code:
    function hidden(){
    var valueCalculated = '3';
    $('#hidden').val(valueCalculated);
    alert($('#hidden').val());  //displays 3 when submit button is clicked.
    }

   JSF code:
   <h:inputHidden binding="#{bean.hidden}"/>
Run Code Online (Sandbox Code Playgroud)

在支持bean中,我有隐藏类型为HTMLInputHidden的getter和setter,我使用getValue()检索隐藏值.这应该返回valueCalculated但它返回null.获取辅助bean中的计算值的方法是什么.

Bal*_*usC 7

HtmlInputHidden#getValue()当您进入调用操作阶段时,将仅返回提交的值.它是在更新模型值阶段设置的.因此,如果你想在bean构造期间或在调用动作阶段之前的其他JSF阶段中获取它,你将得到null.

要解决这个问题,请重写代码逻辑,以便在适当的时候访问它; 在命令按钮/链接操作方法中.否则,您必须从请求参数映射中手动获取它.

例如

<h:form id="form">
    <h:inputHidden id="hidden" value="#{bean.hidden}" />
    <h:commandButton value="submit" action="#{bean.submit}" onclick="$('#form\\:hidden').val('foo')" />
</h:form>
Run Code Online (Sandbox Code Playgroud)

public void submit() {
    // Here, in the bean's action method, it should already be set.
    System.out.println(hidden); // "foo"
}
Run Code Online (Sandbox Code Playgroud)