如何在单击<h:commandlink> </h:commandlink>时阻止页面刷新

时间:2012-09-27 14:50:21

标签: java html ajax jsf page-refresh

我试图在用户点击我的应用中的<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概念

2 个答案:

答案 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之后要渲染的内容。