【问题标题】:Get p:dataTable row data via p:selectOneMenu通过 p:selectOneMenu 获取 p:dataTable 行数据
【发布时间】:2015-05-24 12:01:53
【问题描述】:

我有一个数据表,其中一列包含一个 selectOneMenu(又名 dropDownList)。基本上每一行都有一个 selectOneMenu ,它有一个值列表。只要选择Selectonemenu值,就会有没有能力传递行数据或密钥?这样我可以遍历我的对象列表,分配该行的特定对象并更改值 这不是我的代码,而是一个简单的例子:

    <p:column headerText="Year">
        <h:outputText value="#{car.year}" />
    </p:column>

    <p:column headerText="Brand">
        <h:outputText value="#{car.brand}" />
    </p:column>

    <p:column headerText="SelectOne">
      <p:selectOneMenu value="#{dtBasicView.selectedValue}">
            <f:selectItem itemLabel="#{dtBasicView.listOfValues}" />
            <f:selectItems value="#{dtBasicView.listOfValues}"/>
      </p:selectOneMenu></p:column>
</p:dataTable>

【问题讨论】:

  • 您是否看过 primefaces 网站或手册中关于同一主题的任何示例?

标签: jsf-2 primefaces datatable row selectonemenu


【解决方案1】:

这样我可以遍历我的对象列表,分配该行的特定对象并更改值

这种努力是不必要的。只需将输入组件的值直接绑定到所需的属性即可。

<p:selectOneMenu value="#{car.selectedValue}">

这样 JSF 将透明地为您完成所有这些工作。

如果您打算侦听值更改事件以便您可以执行任何其他操作,请在输入组件内嵌套&lt;p:ajax listener="#{bean.listener}"&gt;。您甚至可以将当前行对象传递给侦听器方法。

<p:selectOneMenu ...>
    ...
    <p:ajax listener="#{bean.changeSelectedValue(car)}" />
</p:selectOneMenu>

 public void changeSelectedValue(Car car) {
     // ...
 }

【讨论】:

  • 我想你误解了我的问题:我将尝试再次解释它:学生对象具有以下值:姓名、姓氏和出勤率 在数据表中有三列:名称(仅显示学生),姓氏(显示姓氏)和出勤(有一个 selectOneMenu 有两个项目:出席或不出席)。我实现了你的建议:&lt;p:selectOneMenu value="#{student.isPresent}"&gt; &lt;p:ajax listener="#{dataTableView.onAttendanceChange}" /&gt; 但是当状态改变时,它只设置值,但不获取行。我需要行。
  • 编辑:&lt;p:selectOneMenu value="#{car.selectedValue}"&gt; 在您选择行时起作用。我只需要更改行的一个值
猜你喜欢
  • 2013-07-10
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多