Boa tarde a todos.
Estou tendo o seguinte problema na minha aplicação:
- Possuo uma dataTable com 4 colunas. 3 com informações e a 4ª apenas com um botão de alterar. Ao clicar no botão de alterar esses valores são passados para 3 campos de textos que ficam ao lado da dataTable (mesmo form). O problema é que essas informações só aparecem nos campos, caso eles estejam disabled=“true”.
Alguém já passou por algo parecido?
Poste o código para auxiliar.
Faz muito tempo que não uso JSF (uns 6 anos), mas parece que eu me lembro de algo do tipo.
É só um palpite, um chute. Disabled é diferente de Editable. Se você estiver misturando os dois, pode ser que de problema.
Não lembro se existe a propriedade “editable”.
Coloca o código da tabela ai para a gente ver.
Abraço.
Renan.
Seguem os códigos:
DataTable
<p:dataTable
id="table_alteraVariaveisGlobais"
value="#{contratoMB.contratoDetalhes.sgttb004VariaveisGlbsCntros}"
var="row"
emptyMessage="#{msgApp.Nao_Existe_Registros}"
paginator="true"
paginatorPosition="bottom"
rows="3"
width="600px">
<p:column
id="column_variavel"
headerText="#{msgContrato.COL_VARIAVEL}"
style="text-shadow: none !important;"
width="70">
<h:outputLabel styleClass="semClick" value="#{row.noVariavel}" />
</p:column>
<p:column
id="column_deVariavel"
headerText="#{msgContrato.COL_DESCRICAO_VARIAVEL}"
width="330">
<h:outputLabel styleClass="semClick" value="#{row.deVariavel}" />
</p:column>
<p:column
id="column_valorVariavel"
headerText="#{msgContrato.COL_VALOR_VARIAVEL}"
width="70">
<h:outputLabel styleClass="semClick" value="#{row.vrVariavel}" converter="valorVariavelConverter"/>
</p:column>
<p:column
id="column_acao"
width="60"
headerText="#{msgContrato.COL_ACAO_VARIAVEL}">
<!-- É esse o botão que estou chamando [INÍCIO] -->
<p:commandLink
id="link_toAlterar"
actionListener="#{contratoMB.toAlterarVariavel}"
title="#{msgContrato.TITLE_ALTERAR_REGISTRO_ATUAL}"
update=":form"
ajax="false"
immediate="true">
<h:graphicImage
value="/resources/img/layout/icon_editar.gif"
style="margin:0px 5px; border: none !important;" />
</p:commandLink>
<!-- É esse o botão que estou chamando [FIM] -->
<h:commandLink
id="link_inativar"
actionListener="#{contratoMB.doInativaVariavel(row)}"
title="#{msgContrato.TITLE_INATIVAR_REGISTRO}"
rendered="#{row.icAtivo}"
onclick="if(!confirm('#{msgsCef.MA004}')) {return false;}"
immediate="true">
<h:graphicImage
value="/resources/img/layout/icon_-delete.gif"
styleClass="action-icon"
style="margin:0px 5px; border: none !important;" />
</h:commandLink>
<h:commandLink
id="link_ativar"
actionListener="#{contratoMB.doAtivaVariavel(row)}"
title="#{msgContrato.TITLE_ATIVAR_REGISTRO}"
rendered="#{!row.icAtivo}"
onclick="if(!confirm('#{msgsCef.MA006}')) {return false;}"
immediate="true">
<h:graphicImage
value="/resources/img/layout/tick.png"
styleClass="action-icon"
style="margin:0px 5px; border: none !important;" />
</h:commandLink>
</p:column>
</p:dataTable>
Campos que recebem os valores:
<div>
<comp:input
id="variavelAlteraContrato"
label="#{msgContrato.LABEL_VARIAVEL}"
size="150"
disabled="true"
value="#{contratoMB.variaveis.noVariavel}"
sizeLabel="85" />
</div>
<div>
<comp:input
id="deVariavelAlteraContrato"
label="#{msgContrato.LABEL_DESCRICAO_VARIAVEL}"
size="150"
value="#{contratoMB.variaveis.deVariavel}"
showRequired="true"
sizeLabel="85" />
</div>
<div>
<comp:input
id="valorVariavelAlteraContrato"
label="#{msgContrato.LABEL_VALOR_VARIAVEL}"
size="150"
showRequired="true"
value="#{contratoMB.variaveis.vrVariavel}"
inputClass="valorVariavel"
converter="valorVariavelConverter"
sizeLabel="85" />
</div>
Componente composto ‘input’
<?xml version="1.0"?>
<!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:c="http://java.sun.com/jsp/jstl/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
<composite:attribute name="label" />
<composite:attribute name="value" />
<composite:attribute name="size" />
<composite:attribute name="sizeLabel" />
<composite:attribute name="converter" />
<composite:attribute name="validatorId" />
<composite:attribute name="inputClass" />
<composite:attribute name="inputStyle" />
<composite:attribute name="componentStyle" />
<composite:attribute name="labelStyle" />
<composite:attribute
name="immediate"
default="false" />
<composite:attribute
name="maxlength"
default="256" />
<composite:attribute
name="disabled"
default="false" />
<composite:attribute
name="required"
default="false" />
<composite:attribute
name="showRequired"
default="false" />
<composite:attribute
name="requiredMessage"
default="#{cc.attrs.label} é um campo obrigatório." />
<composite:attribute name="mask" />
</composite:interface>
<composite:implementation id="#{cc.attrs.id}">
<h:panelGroup
id="pnlExternoInput"
layout="block"
style="float:left;#{cc.attrs.componentStyle}">
<h:panelGroup
layout="block"
style="width: #{cc.attrs.sizeLabel}px; float:left;margin: 10px 10px 0 0;">
<h:outputLabel
value="#{cc.attrs.label}"
styleClass="rotulos semClick"
id="lbl"
style="#{cc.attrs.labelStyle}"
for="input" />
<h:outputText
value="*"
title="Campo Obrigatório."
rendered="#{cc.attrs.required or cc.attrs.showRequired}"
style="color:Red;font-style:normal;font-weight:bold;margin: 0 8px 0 -6px; " />
</h:panelGroup>
<p:inputMask
value="#{cc.attrs.value}"
mask="#{cc.attrs.mask}"
id="input"
styleClass="#{cc.attrs.inputClass}"
maxlength="#{cc.attrs.maxlength}"
disabled="#{cc.attrs.disabled}"
immediate="#{cc.attrs.immediate}"
requiredMessage="#{cc.attrs.requiredMessage}"
style="margin: 10px 10px 0 0; float: left; width: #{cc.attrs.size}px; #{cc.attrs.inputStyle}">
<c:if test="#{cc.attrs.converter != null}">
<f:converter converterId="#{cc.attrs.converter}" />
</c:if>
<c:if test="#{cc.attrs.validatorId != null}">
<f:validator validatorId="#{cc.attrs.validatorId}" />
</c:if>
<c:if test="#{cc.attrs.required}">
<f:validator validatorId="required" />
</c:if>
<composite:insertChildren />
</p:inputMask>
</h:panelGroup>
</composite:implementation>
</html>