Problema ao renderizar <html:select> disabled

5 respostas
marciobarroso

Bom dia pessoal,

Estou com um problema o qual gostaria da opinião de vcs para a melhor solução.

Tenho uma tela de cadastro em uma aplicação onde existe vários campos, e entre eles, 3 combo-box.

Estes combos são selecionados obrigatóriamente para o sucesso no cadastro do registro.

Nesta tela possui também um campo onde é digitado um histórico.

Então, depois do registro salvo, pode-se retornar a tela e cadastrar informações que serão armazenadas como histórico.

Uma das regras estabelecidas é de que no momento do registro do histórico, os demais campos da tela, preenchidos no cadastro do registro, sejam desabilitados.

Aí esta meu problema.

Como implementei :

<logic:equal name="objeto" property="id" value="0">
	<html:select name="objecto" property="tipo" ... >
		<html:options ... />
	</html:select>
</logic:equal>
<logic:notEqual name="objeto" property="id" value="0">
	<html:select name="objecto" property="tipo" ... disabled="true">
		<html:options ... />
	</html:select>
	<input type=hidden name="tipo" value="<bean:write name="objeto" property="tipo" />" />
</logic:notEqual>

O problema é que qdo o select é renderizado como disabled, ele não traz a seleção correta.
Tentei alterar a seleção com javascript, mas tb sem sucesso.

Gostaria da opinião de vcs.

Obrigado

5 Respostas

robinsonbsilva

Jovem,

Por acaso vc consegui resolver este problema??

Gostaria muito de saber a solução!

R

Ola!!!

Já fiz algo parecido, mas com campo text q desabilita um combo, utilizei javascript…é o mesmo conceito.
Tente fazer algo assim:

function load(){
var texto = document.getElementById(“idTexto”);

if (texto .addEventListener) {
      texto .addEventListener("blur", desabilitaCombo, false);
  } else if (texto .attachEvent) {
      texto .attachEvent("onblur", desabilitaCombo);
  }

}

function desabilitaCombo(){

var form = document.forms[’…’];

var texto = document.getElementById(idTexto).value;
if (...pego o value do TEXTO e agora coleque sua condição...) {
       document.getElementById("idCombo").disabled = true;
  } else {
       document.getElementById("idCombo").disabled = false;	
  }

}

<body onload=“load();”>

&lt;html:text ...coloque suas propriedades + esse kra q eh o Id do Struts-&gt; styleId="idTexto" /&gt;

    &lt;!-- Faça a mesma coisa para o seu combo --&gt;

    &lt;html:select ...propriedades + styleId="idCombo" /&gt;

Se der certo me avise, ou não me avise tb!!! rs

Abraço

robinsonbsilva:
Jovem,

Por acaso vc consegui resolver este problema??

Gostaria muito de saber a solução!

robinsonbsilva

Fala Dr. Rodrigo,

Então, o problema que estou tendo seria o seguinte:

Exemplo: Eu tenho um funcionário e esse tem um Perfil

MER

Funcionario
id_funcionario
id_perfil
nome

Perfil
id_perfil
nome

Quando seto como atributo o Objeto Funcionario (idFuncionario, idPerfil, nome) eu seto um List com os perfis
e ao carregar esse “combo” com o List anteriomente setado eu gostaria de deixar selecionado com o “idPerfil” que veio do objeto Funcionario

&lt;label for="perfil"&gt;&lt;strong&gt;*&lt;/strong&gt;Perfil:<br>
               &lt;html:select property="idPerfil" value="??" &gt; 
                  &lt;html:options collection="listPerfis" property="idPerfil" labelProperty="descricao"/&gt;  
               &lt;/html:select&gt;  
            &lt;/label&gt;

Onde coloquei "??" -> se eu especifico um valor "manualmente"m exemplo, ficar atribuido valores ele carrega o correspondente corretamente. Eu gostaria de alguma forma pegar outro atributo da pagina
que seria o "dto" do funcionario e assim pegar o "dto.idPerfil"

Desde já agradeço!

R

Ola Robinson,

Kra, não itendi especificamente a sua pergunta!!!
Não sei se vou te ajudar, mas vou dar um exemplo na versão 1.3 do Struts.

<html:select name="…nome do form…" property=“idPerfil”> <!-- poderia ser tb property=“dto.idPerfil” -->
<html:option value="">Selecionar</html:option>
<html:optionsCollection property=“listPerfis” label=“descricao” value=“idPerfil”/> <!-- e aki não mudaria -->
</html:select>

Abraço

robinsonbsilva:
Fala Dr. Rodrigo,

Então, o problema que estou tendo seria o seguinte:

Exemplo: Eu tenho um funcionário e esse tem um Perfil

MER

Funcionario
id_funcionario
id_perfil
nome

Perfil
id_perfil
nome

Quando seto como atributo o Objeto Funcionario (idFuncionario, idPerfil, nome) eu seto um List com os perfis
e ao carregar esse “combo” com o List anteriomente setado eu gostaria de deixar selecionado com o “idPerfil” que veio do objeto Funcionario

&lt;label for="perfil"&gt;&lt;strong&gt;*&lt;/strong&gt;Perfil:<br>
               &lt;html:select property="idPerfil" value="??" &gt; 
                  &lt;html:options collection="listPerfis" property="idPerfil" labelProperty="descricao"/&gt;  
               &lt;/html:select&gt;  
            &lt;/label&gt;

Onde coloquei "??" -> se eu especifico um valor "manualmente"m exemplo, ficar atribuido valores ele carrega o correspondente corretamente. Eu gostaria de alguma forma pegar outro atributo da pagina
que seria o "dto" do funcionario e assim pegar o "dto.idPerfil"

Desde já agradeço!

robinsonbsilva

Então, eu gostatia apenas que o “Combo” já viesse com o “perfil” correto ao carregar!
Ele sempre posiciona no primeiro index!

Criado 11 de julho de 2006
Ultima resposta 2 de jun. de 2008
Respostas 5
Participantes 3