首页 > 解决方案 > 将对象从 p:dataTable 传递到 JSF 中 rowSelect 上的控制器

问题描述

我正在尝试将填充了项目表的对象传递给控制器​​。然后我使用 JS alert 来验证成功。但是我没有从桌子上传递任何东西。

任何帮助,将不胜感激。

问题.xhtml

<p:dataTable var="issue" value="#{issuesController.findWithParameter(issues, startenddates)}" styleClass="list" selectionMode="single" selection="#{issuesController.issue}" rowKey="#{issue.id}" >
    <p:ajax event="rowSelect" update="mainForm" listener ="#{issuesController.onRowSelect}" 
            oncomplete="alert(args.name)"/>  

    <p:column headerText="Id"  id = "head_id" style="width:0%; padding: 0px;">
        <h:outputText value="#{issue.id}"/>
    </p:column>
    <p:column headerText="Child" id = "head_child" style="width:12%;">
        <h:outputText value="#{issue.child}"/>
    </p:column>
...
</p:dataTable>

问题控制器.java

@Named("issuesController")
@RequestScoped
public class IssuesController implements Serializable {

    @Inject
    private Issues issue;
....
public void onRowSelect(SelectEvent event) throws IOException {
        Issues i = (Issues) event.getObject();
        String toWrite;
        if (i == null) {
            toWrite = "Item is not recieved";
        } else {
            toWrite = i.toString();
        }
        RequestContext.getCurrentInstance().addCallbackParam("name", toWrite);
}

问题.java

@Named("issues")
@SessionScoped
@XmlRootElement
public class Issues implements Serializable {
....
}

我尝试了不同类型的范围,尝试了 f:attribute ......这都不起作用......

标签: primefacesjsf-2listener

解决方案


尝试使用process="@this"并将范围更改为 @ViewScoped.


推荐阅读