ajax - 如何提交表单,来自 p :selectBooleanCheckbox change event

标签 ajax jsf-2 primefaces

我正在使用 primefaces 处理复杂的表单。我需要根据复选框的值隐藏表单的一部分

    <p:selectBooleanButton id="input1" .... />
<p:inputText id="input2" />


<!-- the boolean checkbox -->
<p:selectBooleanCheckbox id="checkBox1" value="#{bbean.someBoolValue}" >
    <p:ajax event="change" update=":#{p:component('someParentcComponentsId')}" />
</p:selectBooleanCheckbox>

<!-- some input fields here. These will be rendered depending checkBox1 value -->
<p:panel rendered="#{bbean.someBoolValue}" id="hiddingPanel">   
    <h:panelGrid columns="2" >

        <p:inputText id="input3" />
    </h:panelGrid>
</p:panel>

到目前为止,我已经完成了这项工作,因此当单击 checkBox1 时,hiddingPanel 会显示或隐藏。但有一个问题:该表单中每个输入的值(例如 input1input2)都丢失了,因为 'change' ajax 事件没有提交它们的值。

如何确保在更新表单之前提交了所有 输入值?

最佳答案

只需确保您更新真正需要更新的部分。

<p:selectBooleanCheckbox id="checkBox1" value="#{bbean.someBoolValue}" >
    <p:ajax event="change" update="hiddingPanel" />
</p:selectBooleanCheckbox>

<!-- some input fields here. These will be rendered depending checkBox1 value -->
<p:panel id="hiddingPanel">   
    <h:panelGrid columns="2" rendered="#{bbean.someBoolValue}">

        <p:inputText id="input3" />
    </h:panelGrid>
</p:panel>

请注意,我将 rendered 移到了它的直接子节点,原因在这里解释:Why do I need to nest a component with rendered="#{some}" in another component when I want to ajax-update it?

关于ajax - 如何提交表单,来自 p :selectBooleanCheckbox change event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20067112/

相关文章:

java - 是否不支持 meta http-equiv 值缓存控制?

css - 如何实现带有图像和按钮标签的 JSF 按钮

jsf - 让 PrimeFaces 消息在 5 秒后消失

css - 自定义 growl 消息边框颜色

primefaces - 如何制作 p :menu scrollable in primefaces?

php - 将 PHP 多维数组返回到 Javascript/AJAX

python - Google App Engine - 创建文档编辑器/进入 Google 文档?

asp.net - AjaxControlToolkit 需要 ASP.NET Ajax 4.0 脚本错误

javascript - 如何使用ajax post请求从输入中放入参数?

java - 用于 JSF、Hibernate 项目的 Tomcat 或 JBoss