2

您如何解决这个常见问题?假设您需要根据某些 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 的 paneGroup 然后在<p:ajax>使用这样的东西,update=id1, id2, ...但在我看来这也不是一个好的解决方案。

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

4

1 回答 1

1

您要么在更新中提供要更新的所有 ID,要么

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

inputText1、inputText2、inputText3 等

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

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

但我认为这是一种迂回的方式,因为这需要访问服务器,而不是我会将 id 放在更新中。

于 2012-04-28T16:00:31.260 回答