我在数据表中遇到 JSF commandLink 问题。我无法让它工作。
我的 bean 在请求范围内,我的操作类也在请求范围内。这是我的数据表:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<f:view contentType="text/html">
<ui:include src="../blocks/head.xhtml"/>
<body>
<ui:include src="../blocks/header.xhtml"/>
<div class="content_table" align="center">
<h:dataTable headerClass="data_table_header"
cellpadding="10"
rowClasses="dataTableRow1,dataTableRow2"
value="#{searchBean.searchResult.corpusInfos}"
var="corpusInfo">
<h:column>
<f:facet name="header">
#{msg['application.corpusInfoTable.corpusPart']}
</f:facet>
#{corpusInfo.corpusPart}
</h:column>
<h:column>
<f:facet name="header">
#{msg['application.corpusInfoTable.totalWords']}
</f:facet>
#{corpusInfo.allWordsCount}
</h:column>
<h:column>
<f:facet name="header">
#{msg['application.corpusInfoTable.request']}
</f:facet>
<h:form id="idSimpleSearchForm">
<h:commandLink id="idSimpleSearchFromTable" action="#{searchAction.processSearch}"
value="#{corpusInfo.searchTerm}">
<f:setPropertyActionListener value="50" target="#{searchBean.lineLength}"/>
<f:setPropertyActionListener value="simpleSearch" target="#{searchBean.searchType}"/>
<f:ajax execute="@form"/>
</h:commandLink>
</h:form>
</h:column>
<h:column>
<f:facet name="header">
#{msg['application.corpusInfoTable.usageNumber']}
</f:facet>
#{corpusInfo.usageCount}
</h:column>
<h:column>
<f:facet name="header">
#{msg['application.corpusInfoTable.analyzedSourcesCount']}
</f:facet>
#{corpusInfo.analyzedSourcesCount}
</h:column>
</h:dataTable>
</div>
<ui:include src="../blocks/footer.xhtml"/>
</body>
</f:view>
</HTML>
我试图将操作类和 bean 的范围更改为会话或视图。没有成功。当我单击生成的链接时,页面会刷新。
该表是根据我之前的请求生成的。第一个页面包含一些字段和操作按钮,当点击操作按钮时,到达操作类所需的数据设置为 bean 类并传递到该数据表所在的以下 xhtml 页面。我以正确的顺序查看表中的所有值,除了操作链接之外一切正常。
关于如何解决这个问题的任何想法?
编辑:
我把数据表所在的所有页面都放在了里面。也许其他标签有问题?也许他们改变了看法?这个页面的导航写在 faces-config.xml 文件中,如下所示:
<navigation-rule>
<navigation-case>
<from-action>#{searchAction.processSearch}</from-action>
<from-outcome>success_simple_search</from-outcome>
<to-view-id>/views/concordance/concordance.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-action>#{searchAction.processSearch}</from-action>
<from-outcome>failure</from-outcome>
<to-view-id>/views/error/unexpectedError.xhtml</to-view-id>
</navigation-case>
</navigation-rule>