【发布时间】:2020-05-03 11:42:22
【问题描述】:
我正在尝试将填充了项目表的对象传递给控制器。然后我使用 JS alert 来验证成功。但是我没有从桌子上传递任何东西。
任何帮助将不胜感激。
issues.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...这都不起作用...
【问题讨论】:
-
请先与 PrimeFaces 展示柜进行比较(所有作品都在那里并且已经存在了很长时间)。之后,搜索(使用'primefaces datatable row selection ajax'(在搜索条件中添加'site:stackoverflow.com'有帮助)并开始阅读。如果找不到原因,则创建一个minimal reproducible example,发布它在这里,我们可以进行调查。“未能通过任何东西”有点奇怪,没有调用方法?对象“空”?然后更具体地搜索这些术语。(哦,题外话,
private Issues issue;很奇怪,复数和单) -
你的 primefaces 版本是多少?
-
尝试从 ajax 标记中删除更新和 oncomplete 并使用视图范围的 bean?
标签: primefaces jsf-2 listener