我有一个h:dataTable,其中包含自定义对象Result的ArrayList生成的数据。 当我尝试启用单元格的编辑时,它不会允许我这样做。我怀疑它从服务器请求数据并覆盖我的最后选择。当我尝试更新h:dataTable中的单元格时,它不会这样做
我<h:dataTable>
形式和完整的XHTML文档
<!-- language: xhtml -->
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>IGNORED</title>
</h:head>
<h:body>
<ui:composition template="../templates/masterLayout.xhtml">
<ui:define name="windowTitle"> #{msgs.viewResultsTitle}</ui:define>
<ui:define name="content">
<h:form>
<h:dataTable value="#{managedBean.viewResultList}" var="res"
styleClass="tracks"
headerClass="trackHeader"
columnClasses="oddColumn,evenColumn">
<h:column>
<f:facet name="header">#{msgs.trackID}</f:facet>
#{res.track_name}
</h:column>
<h:column>
<f:facet name="header">#{msgs.startnumber}</f:facet>
<h:inputText value="#{res.startnumber}" size="5" rendered="#{res.editable}" />
<h:outputText value="#{res.startnumber}" rendered="#{not res.editable}" />
</h:column>
<h:column>
<f:facet name="header">#{msgs.time}</f:facet>
<h:inputText value="#{res.time}" size="10" rendered="#{res.editable}" >
<f:validator validatorId="ResultValidator" />
<f:converter converterId="ResultConverter" />
</h:inputText>
<h:outputText value="#{res.time}" rendered="#{not res.editable}" />
</h:column>
<h:column>
<f:facet name="header">#{msgs.runnerID}</f:facet>
#{res.runner_name}
</h:column>
<h:column>
<f:facet name="header">#{msgs.divID}</f:facet>
#{res.division_value}
</h:column>
<h:column>
<h:commandLink value="#{msgs.edit}" action="#{managedBean.editAction(res)}" rendered="#{not res.editable}"/>
</h:column>
<h:column>
<h:commandLink value="#{msgs.saveChanges}" action="#{managedBean.saveAction(res)}" />
</h:column>
</h:dataTable>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
它调用managedBean.editAction至极看起来是这样的:
public String editAction(Result result) {
result.setEditable(true);
return null;
}
它bassicly设置所有结果对象为可编辑的。但是当我按下它加载页面并没有任何事情发生。
我已经按照在www.mkyoung.com jsf tutorial
看起来'结果'是表中的一个条目。它指的是哪一个? – Thomas
它引用dataTable中的res对象。不知道为什么我没有将它与managedBean.editAction(res)一起传递,现在就做。但它仍然不起作用... – jonas