我试图在用户点击我的应用中的<h:commandLink>
时阻止页面刷新。我尝试了这个,但它不起作用:
已更新:
<h:dataTable value="#{person.IssueList}" var="p" >
<h:column style="width: 20px">
<f:facet name="header">Issue</f:facet>
<h:commandLink value="#{p.IssueDesc}"/>
</h:column>
<h:column style="width: 20px">
<f:facet name="header">Reporting Date</f:facet>
<p:calendar value="#{p.issuerepDt}" rendered="#{p.editable}" id="CalendarId"/>
<h:outputText value="#{p.issuerepDt}" rendered="#{not p.editable}" />
</h:column>
<h:column>
<f:facet name="header">Action</f:facet>
<h:commandLink value="Edit" action="#{person.editAction(p)}">
<f:ajax execute="@form" render="@none" />
</h:commandLink>
</h:column>
</h:dataTable>
java片段:
public void editAction(PersonIssues pIssues) {
pIssues.setEditable(true);
}
我正在使用来自MKyong.I
的editing jsf datatable概念答案 0 :(得分:2)
因为我看到你使用日历组件的primefaces,你可能也想使用primefaces commandbutton和datatable。这些主要组件在一起发挥得非常好。
从下面的例子中,你可以看到我给你的数据表一个id,在commandLink上,我添加了一个update属性来在调用动作后更新数据表。默认情况下,primefaces具有ajax属性,该属性在commandLinks上设置为true。
<p:dataTable id="myTable" value="#{person.IssueList}" var="p" >
<p:column style="width: 20px" headerText="Issue">
<p:commandLink value="#{p.IssueDesc}"/>
</p:column>
<p:column style="width: 20px" headerText="Reporting Date">
<p:calendar value="#{p.issuerepDt}" rendered="#{p.editable}" id="CalendarId"/>
<h:outputText value="#{p.issuerepDt}" rendered="#{not p.editable}" />
</p:column>
<p:column headerText="Action">
<p:commandLink value="Edit" action="#{person.editAction(p)}" update="myTable"/>
</p:column>
</p:dataTable>
答案 1 :(得分:1)
我会尝试使用listener
的{{1}}代替f:ajax
的{{1}}:
action
另外,请注意ajax之后要渲染的内容。