【问题标题】:How to obtain the value of h:inputHidden element whose value is calculated using jquery javascript如何获取使用jquery javascript计算其值的h:inputHidden元素的值
【发布时间】:2011-05-06 01:54:56
【问题描述】:

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

    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}"/>

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

【问题讨论】:

    标签: javascript jsf-2


    【解决方案1】:

    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>
    

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

    【讨论】:

    • @BalusC:我正在访问操作方法本身的值。但我得到一个空值。如果我只在 Mozilla 中返回登录页面并再次登录,则隐藏值设置为之前计算的值。
    • 哪个 JSF 实现/版本?尝试使用value 而不是binding,就像我的回答一样。
    • @BalusC:我使用的是 JSF 2.0 版本。我将使用价值并检查它是否按照您所说的那样工作。感谢您提供的信息。
    • "JSF 2.0" 只是规范版本。哪个暗示?莫哈拉?我的脸? ADF?还有什么?以及哪个版本?莫哈拉 2.0.5?我的脸 2.0.2?或者甚至可能是 Mojarra 2.1.1?等等
    • 在这里工作正常。您的问题是由其他原因引起的。也许你根本没有&lt;h:form prependId="false"&gt;。也许$('#hidden') 没有指向真正的隐藏输入(在浏览器中打开页面,查看源代码并检查生成的 HTML id)。也许您正在访问 bean 中的错误属性。等等..等等..
    猜你喜欢
    • 2012-11-09
    • 2013-12-21
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多