【问题标题】:Is it possible to define a form for a single row in a panelgrid?是否可以为面板网格中的单行定义表单?
【发布时间】:2014-03-25 12:54:54
【问题描述】:

是否有可能在 panelGrid 中为单行创建一个表单?如果我只是将特定列放在表单标签中,它们(当然)会呈现在我的父 panelGrid 的一列中。

有没有可能解决这个问题?解决方案使用 jsf-tag 还是 primefaces-tag 并不重要

我正在使用 Mojarra 2.1.26 和 Primefaces 4.0

【问题讨论】:

  • 为什么需要表格? h:panelGroup还不够?
  • 在我的表中呈现为一列(-tag)。我需要一个单行表单,因为我只想更新服务器端的一些特定数据,而不是我的表中表示的全部数据。
  • 您可以使用commandButton 或commandLink 或点击表格中的选定行,每个行都可以执行行相关操作,而无需为每行添加额外的表单。

标签: forms jsf-2 primefaces panelgrid


【解决方案1】:

使用部分进程/更新。

如果您的要求是只发送特定行中的数据(而不发送其他 http 参数,即使它们没有被处理)添加 partialSubmit 功能:

<h:form>
    <p:panelGrid id="grid">
        <p:row id="row1">
            <p:column>
                <p:inputText value="#{someBean.someProperty}"/>
            </p:column>
            <p:column>
                <p:inputText value="#{someBean.anotherProperty}"/>
            </p:column>
        </p:row>
        <!-- other rows -->
    </p:panelGrid>

    <p:commandButton action="#{someBean.someAction}" process="@this row1" 
        update="grid" partialSubmit="true" value="submit"/>
</h:form>

这与仅针对第 1 行的表单的行为相同(几乎)。

请注意,您必须更新网格,因为 p:panelgrid 会自行呈现其子组件。

但是,使用纯 html 也无法实现您想要的行为(确切地说)。

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签