【问题标题】:Get sibling element from PrimeFaces datatable row从 PrimeFaces 数据表行获取兄弟元素
【发布时间】:2015-10-23 01:55:05
【问题描述】:

我在 PrimeFaces 中创建了一个数据表,它接收并呈现对象列表。在行的末尾,我有一个 commandButton 元素,当它被使用时,它会在服务器上的 managedBean 上做一些事情。

当前行的所有数据都是使用放置在 param 属性的命令按钮中的对象 ID 检索的。

问题是我有一个 selectOneMenu 元素,它与对象无关。我选择了一个影响背后逻辑的值。

这是表格:

<h:panelGrid id="panel" columns="2" bgcolor="#cce4ff"
                     cellpadding="10" cellspacing="1" rendered="#{indexBean.showChannelList}"
                     style="margin-top: 10px; margin-left: 100px;">
            <p:dataTable var="program" value="#{indexBean.programList}" style="width:1000px;"
                         paginator="True" rows="10" rowIndexVar="row" sortBy="#{program.id}"
                         paginatorPosition="bottom" widgetVar="programDT" id="programDT">

...那个选择

<p:column headerText="text" width="15%">
                    <h:selectOneMenu id="select-valability" value="#{indexBean.valabilitySelected}" disabled="#{indexBean.disabled}" style="font-size: small;">
                        <f:selectItems value="#{indexBean.listValabilities}" />
                        <f:param value="#{program.id}" />
                        <f:ajax resetValues="true" />
                    </h:selectOneMenu>
                </p:column>

...还有命令按钮

<p:column headerText="text" width="20%" style="text-align: center;">
                    <h:commandButton id="cmd-button-id" value="gen JSON" action="#{indexBean.action}" 
                                     style="width: 200px; height: 30px;"
                                     class="ui-button ui-widget ui-state-default ui-corner-all"
                                     >
                        <f:param name="programId" value="#{program.id}" />

                    </h:commandButton>
                </p:column>

我希望能够从触发操作的特定行中获取选择元素的值。

我尝试过使用context.findComponent(),但即使我将JSF 表生成的索引为form:table:index:staticIdOfSelect 的元素的绝对路径放入元素的绝对路径,它也会给我null。

我不知道如何获取兄弟元素。那是另一个。

来自 bean 类:

@ManagedBean
@SessionScoped
public class IndexBean

我真的被困在这里了。 提前致谢!

【问题讨论】:

    标签: jsf-2 primefaces datatable


    【解决方案1】:

    使用行上的一些元素在 bean 中设置一个 ajax 监听器来存储数据,然后 update="the element" 你想从中获取信息。

    【讨论】:

    • 请改进此“答案”或将其添加到评论中
    • 你能说得更具体点吗?也许是一个例子?我在命令按钮上有一个 ajax 侦听器,我认为我可以轻松获取父元素,即行元素,而不是从该行的 choldren 中获取唯一的 SelectOneMenu 元素。但显然父元素不是 元素是列,我又被卡住了。
    • 你有你需要的。但我认为你正在以错误的方式寻找数据表中的父级。您应该从拥有所有信息的 java 代码中获取它。
    • 我已经使用模型中的瞬态字段解决了这个问题,然后 f:setPropertyActionListener 并且目标被设置为所需类型的服务器上的对象。感谢您的提示。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签