在点击保存按钮后,我很难在托管bean中获取更新值。我可以毫不费力地填充主行和详细行,但h:inputText
字段中的值永远不会返回到bean。有什么想法吗?
XHTML:
<rich:popupPanel>
<h:form id="formTesteJarra">
<rich:toolbar height="30" itemSeparator="grid">
<rich:toolbarGroup>
<a4j:commandButton id="testejarra_ico_first" execute="@this"
image="/resources/images/ico_first.gif"
actionListener="#{testeJarra.tmp()}">
<rich:tooltip target="testejarra_ico_first"
value="#{msgs.pri_dia_mes}" />
</a4j:commandButton>
<a4j:commandButton id="testejarra_ico_previous" execute="@this"
image="/resources/images/ico_previous.gif"
actionListener="#{testeJarra.tmp()}">
<rich:tooltip target="testejarra_ico_previous"
value="#{msgs.volt_um_dia}" />
</a4j:commandButton>
<rich:calendar id="testejarra_data_sele" datePattern="dd/MM/yyyy"
firstWeekDay="0" showWeeksBar="false" cellWidth="20px"
cellHeight="20px" style="width:100px" value="">
<rich:tooltip target="testejarra_data_sele"
value="#{msgs.ir_data_sele}" />
</rich:calendar>
<a4j:commandButton id="testejarra_ico_confirm" execute="@this"
image="/resources/images/ico_confirm.gif"
actionListener="#{testeJarra.tmp()}">
<rich:tooltip target="testejarra_ico_confirm"
value="#{msgs.data_sele}" />
</a4j:commandButton>
<a4j:commandButton id="testejarra_ico_next" execute="@this"
image="/resources/images/ico_next.gif"
actionListener="#{testeJarra.tmp()}">
<rich:tooltip target="testejarra_ico_next"
value="#{msgs.avan_um_dia}" />
</a4j:commandButton>
<a4j:commandButton id="testejarra_ico_last" execute="@this"
image="/resources/images/ico_last.gif"
actionListener="#{testeJarra.tmp()}">
<rich:tooltip target="testejarra_ico_last"
value="#{msgs.ir_ult_dia_mes}" />
</a4j:commandButton>
</rich:toolbarGroup>
<rich:toolbarGroup>
<a4j:commandButton id="testejarra_btnSalvar" execute="@form"
immediate="true" enabled="#{testeJarra.salvarEnabled()}"
image="#{testeJarra.salvarEnabled()? '/resources/images/ico_salvar.png' : '/resources/images/ico_salvar_disable.png'}"
actionListener="#{testeJarra.salvar()}"
oncomplete="#{rich:component('popUpTesteJarra')}.hide(); return true;">
<rich:tooltip target="testejarra_btnSalvar"
value="#{msgs.salvar}" />
</a4j:commandButton>
</rich:toolbarGroup>
</rich:toolbar>
<br />
<rich:dataTable id="testesTable" value="#{testeJarra.testes}"
binding="#{testeJarra.binding}" var="teste" rows="1"
cellpadding="0" cellspacing="0" style="width:100%">
<f:facet name="header">
<rich:columnGroup>
<rich:column colspan="10">
<h:outputText value="ÁGUA BRUTA" />
</rich:column>
<rich:column breakRowBefore="true" colspan="2">
<h:outputText value="Operador" />
</rich:column>
<rich:column>
<h:outputText value="Horário" />
</rich:column>
<rich:column>
<h:outputText value="Cor" />
</rich:column>
<rich:column>
<h:outputText value="Turbidez" />
</rich:column>
<rich:column>
<h:outputText value="Alcalinidade" />
</rich:column>
<rich:column>
<h:outputText value="pH" />
</rich:column>
<rich:column>
<h:outputText value="Temp. da Água" />
</rich:column>
<rich:column>
<h:outputText value="Temp. Ar" />
</rich:column>
<rich:column>
<h:outputText value="Observações" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column colspan="2">
<div align="center">
<h:outputText value="#{teste.usuario.nomeUsuario}" />
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="hora" size="5"
value="#{teste.dataExecucao}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="medicao" size="5"
value="#{teste.corAgua}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="medicao" size="5"
value="#{teste.turbidezAgua}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="medicao" size="5"
value="#{teste.alcalinidadeAgua}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="medicao" size="5"
value="#{teste.PHAgua}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="medicao" size="5"
value="#{teste.temperaturaAgua}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="medicao" size="5"
value="#{teste.temperaturaAr}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText value="#{teste.observacoes}">
</h:inputText>
</div>
</rich:column>
<rich:collapsibleSubTable id="amostrasTable"
value="#{teste.amostras}" var="amostra">
<f:facet name="header">
<rich:columnGroup>
<rich:column colspan="10">
<div align="center">
<h:outputText value="AMOSTRAS" />
</div>
</rich:column>
<rich:column rowspan="2" breakRowBefore="true">
<div align="center">
<h:outputText value="Jarra" />
</div>
</rich:column>
<rich:column colspan="2">
<div align="center">
<h:outputText value="Dosagens" />
</div>
</rich:column>
<rich:column colspan="3">
<div align="center">
<h:outputText value="Floculação" />
</div>
</rich:column>
<rich:column colspan="2">
<div align="center">
<h:outputText value="Decantação" />
</div>
</rich:column>
<rich:column rowspan="2">
<div align="center">
<h:outputText value="Método" />
</div>
</rich:column>
<rich:column rowspan="2">
<div align="center">
<h:outputText value="Redução Turb (%)" />
</div>
</rich:column>
<rich:column breakRowBefore="true">
<div align="center">
<h:outputText value="Sulfato" />
</div>
</rich:column>
<rich:column>
<div align="center">
<h:outputText value="Cal" />
</div>
</rich:column>
<rich:column>
<div align="center">
<h:outputText value="Inicio" />
</div>
</rich:column>
<rich:column>
<div align="center">
<h:outputText value="Aspecto" />
</div>
</rich:column>
<rich:column>
<div align="center">
<h:outputText value="pH" />
</div>
</rich:column>
<rich:column>
<div align="center">
<h:outputText value="Cor" />
</div>
</rich:column>
<rich:column>
<div align="center">
<h:outputText value="Turbidez" />
</div>
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column>
<div align="center">
<h:outputText value="#{amostra.numero}" />
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="medicao" size="5"
value="#{amostra.sulfato}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="medicao" size="5"
value="#{amostra.cal}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="hora" size="5"
value="#{amostra.duracao}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:selectOneMenu value="#{amostra.aspecto.codigo}">
<f:selectItem itemLabel="#{msgs.selecionar}"
itemValue="#{amostra.aspecto.codigo}" />
<f:selectItems value="#{testeJarra.aspectos}" var="item"
itemValue="#{item.codigo}" itemLabel="#{item.descricao}" />
</h:selectOneMenu>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="medicao" size="5" value="#{amostra.PH}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="medicao" size="5"
value="#{amostra.cor}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:inputText styleClass="medicao" size="5"
value="#{amostra.turbidez}">
<rich:validator />
</h:inputText>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:selectOneMenu value="#{amostra.metodo.codigo}">
<f:selectItem itemLabel="#{msgs.selecionar}"
itemValue="#{amostra.metodo.codigo}" />
<f:selectItems value="#{testeJarra.metodos}" var="item"
itemValue="#{item.codigo}" itemLabel="#{item.descricao}" />
</h:selectOneMenu>
</div>
</rich:column>
<rich:column>
<div align="center">
<h:outputText value="#{amostra.reducaoTurbidez}" />
</div>
</rich:column>
</rich:collapsibleSubTable>
<f:facet name="footer">
<rich:column colspan="10">
<rich:dataScroller for="testesTable" fastStep="3" />
</rich:column>
Registros: #{testeJarra.testes.size()}
</f:facet>
</rich:dataTable>
</h:form>
</rich:popupPanel>
@ViewScoped
bean:
@ApplicationPath("/rest")
@ManagedBean(name = "testeJarra")
@ViewScoped
public class TesteJarraBean extends BaseBean implements Serializable {
private static final long serialVersionUID = -7875922537080530588L;
private List<TesteJarra> testes;
// Objetos atualizados pelo usuário na view
private UIDataTable binding;
private List<MetodoTesteJarra> metodos;
@EJB
private MetodoTesteJarraUC metodoUC;
public TesteJarraBean() {
}
@PostConstruct
public void init() {
Calendar cal = Calendar.getInstance();
testes = testeUC.getAllByDataExecucao(cal.getTime());
if (testes == null)
testes = new ArrayList<TesteJarra>();
TesteJarra teste = new TesteJarra((UnidadeOperacional) getObjectSession(UNID_OPER),
(Usuario) getObjectSession(USER), cal.getTime());
int numeroAmostras = Integer.parseInt(
FacesContext.getCurrentInstance().getExternalContext().getInitParameter("NUMERO_AMOSTRAS_TESTE_JARRA"));
for (int i = 0; i < numeroAmostras; i++) {
AmostraTesteJarra a = new AmostraTesteJarra(teste);
teste.adicionarAmostra(a);
}
testes.add(0, teste);
if (metodos == null)
metodos = metodoUC.getAtivos();
}
public void salvar() {
TesteJarra teste = (TesteJarra) binding.getRowData();
teste = null;
}
public boolean salvarEnabled() {
return true;
}
public void tmp() {
}
public Aspecto[] getAspectos() {
return Aspecto.values();
}
public List<TesteJarra> getTestes() {
return testes;
}
public void setTestes(List<TesteJarra> testes) {
this.testes = testes;
}
public List<MetodoTesteJarra> getMetodos() {
return metodos;
}
public void setMetodos(List<MetodoTesteJarra> metodos) {
this.metodos = metodos;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public UIDataTable getBinding() {
return binding;
}
public void setBinding(UIDataTable binding) {
this.binding = binding;
}
}
这就是我需要的: