【问题标题】:Using hidden input value in an AJAX action after setting it设置后在 AJAX 操作中使用隐藏的输入值
【发布时间】:2016-05-03 17:45:31
【问题描述】:

我有一个命令按钮,它在单击事件时使用 Javascript(通过设置隐藏的输入值)在支持 bean 中发送一些浏览器信息,然后使用该数据执行 AJAX 操作。隐藏的输入正确地获取了该数据(在浏览器的控制台中使用 jQuery 检查),但是当执行操作时,该数据不可用。如果我第二次单击命令按钮,则数据可用。我相信我必须在执行 AJAX 操作之前更新服务器端的隐藏输入值,但我不太确定如何实现。

我的代码:

// Javascript function
getClientSideData: function() {
    var data = // some string containing browser info
    $('[id$=hidClientSideData]').val(data);
}

// HTML
<p:commandButton id="btnOK" value="OK" action="#{backingBean.doBtnOK}" onclick="getClientSideData();" process="@(.pghiddenfields)"/>

<h:panelGroup id="pgHiddenFields" styleClass="pghiddenfields" >
    <h:inputHidden id="hidClientSideData" 
        value="#{backingBean.clientSideData}" immediate="true" />
</h:panelGroup>

所以,我想将一些字符串从 Javascript 代码(客户端)发送到支持 bean,并在同一个按钮上的 ajax 操作中使用它。如何更改代码以在操作中获取该数据?

【问题讨论】:

    标签: ajax jsf-2 primefaces hidden-field


    【解决方案1】:

    我不太听从您的解释,因为在您的代码中,commandButton 未处理,因此未执行操作(?)

    如果我改变了

    getClientSideData: function() {
    

    function getClientSideData() {
    

    并将脚本放入 h:head 中,然后放入

    process="@(.pghiddenfields), @this"
    

    在按钮上它可以按您的预期工作。也没有immediate="true"。我正在使用ViewScoped bean,并将其全部放在一个表单中。

    如果它仍然不适合你,我猜你没有显示其他问题。

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 2013-04-25
      • 2019-01-06
      • 1970-01-01
      相关资源
      最近更新 更多