У меня есть h: dataTable с данными, сгенерированными из ArrayList с пользовательским объектом Result.
Когда я пытаюсь включить редактирование ячеек, я не могу этого сделать. Я подозреваю, что он запрашивает данные с сервера и отменяет мой последний выбор.
Моя <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;
}
Он в основном устанавливает все объекты результатов в редактируемые. Но когда я нажимаю, он загружает страницу, и ничего не происходит.
Я следовал за тобой на www.mkyoung.com jsf tutorial