我的要求是当用户点击提交按钮时,计算的新值应存储在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中计算值的方法是什么。
答案 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"
}