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

时间:2011-05-06 01:54:57

标签: 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}"/>

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

1 个答案:

答案 0 :(得分:7)

HtmlInputHidden#getValue()只会在您进入调用操作阶段时返回提交的值。它是在更新模型值阶段设置的。因此,如果您在构建bean期间或在调用操作阶段之前的其他JSF阶段期间尝试获取它,您将获得null

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

E.g。

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

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