在Ajax事件上呈现表单内容

时间:2012-04-28 15:45:14

标签: forms jsf layout jsf-2 primefaces

你如何解决这个常见问题?让我们说你需要渲染一些表单元素,这取决于一些Ajax事件(但不是整个表单),你不想打破表单布局。 这是示例代码

<h:form>
    <h:panelGrid columns="2">
        text1
        <h:inputText value="asasd" />
        text2
        <h:inputText value="asdasd" />
        <p:selectBooleanCheckbox value="#{bean.myBoolean}">
            <p:ajax update="someId" listener="{bean.changeValueOfMyBoolean"} />
        </p:selectBooleanCheckbox>
        <h:outputText value="asdas"rendered="#{bean.myBoolean}" />
        <h:inputText value="bean value" rendered="#{bean.myBoolean"} />
        ...few more some elements

所以我只看到两个选项,把它们放在<h:panelGroup>中,给它们一个id并在里面创建另一个<h:panelGrid>(它打破了表单布局,因为新渲染的元素会有不同的缩进)或者给每个元素它自己的窗格组具有不同的id a然后在<p:ajax>中使用类似update=id1, id2, ...的东西,但这对我来说似乎不是一个好的解决方案。

那你的方法是什么,有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以在更新或

中提供要更新的所有ID

您可以提供具有共同点的所有相关组件ID,例如

inputText1,inputText2,inputText3等

然后在您的托管bean中有一个变量,它将返回所有这些元素的ID。

在ajax事件上,设置值(您可以使用正则表达式获取视图中的所有ID)。

但我认为这是关于方式的问题,因为这需要访问服务器,而是我会将ID放在更新中。