Arquivo properties struts 2

17 respostas
R

Galera será que alguém poderia me dar um exemplo de como exibir uma label de um arquivo .properties usando struts 2

fiz como esta abaixo mais não deu certo

<s:select theme="simple" id="stUsuario"  list="#{0:'teste'}" name="status">	</s:select>

17 Respostas

ricardo.narezi

Se é que eu entendi o que vc quer, colocar um headerValue=“Selecione …”

[]s

R

ricardo.narezi eu quero exibir na tela um valor de um arquivo properties vc pode mostrar como funciona o exemplo que vc mostrou ?

ricardo.narezi

mas exibir na tela onde???

<s:select theme=“simple” id=“stUsuario” list="#{0:‘teste’}" name=“status”> [color=red]AQUI[/color] </s:select>

R

o trecho de código abaixo a itenção e buscar o valor que esta no arquivo .properties mais não sei onde tenho ou como tenho que fazer para buscar

não sei se é aqui :<s:select theme=“simple” id=“stUsuario” list="#{0:‘teste’}" name=“status”>[color=red]AQUI[/color][size=18] [/size]</s:select>

ou aqui :<s:select theme=“simple” id=“stUsuario” list="#{0:‘teste’}" name=“status”></s:select>

jyoshiriro

Amigo,

você quer que o conteúdo de um .propertires seja carregado e usado no “combo” gerado pela tag <s:select>?

Por exemplo, o arquivo de conteúdo

ovo=Ovo
suco1=Suvo de Uva
suco2=Suco de Maça

geraria uma lista equivalente à #{‘ovo’:‘Ovo’,‘suco1’:‘Suco de Uva’,‘suco2’:‘suco de Maça’}

Isso que você quer fazer?

R

exato jyoshiriro mais não quero escrever o valores da combo dentro da jspe sim buscar do arquivo…

porque se precisar de dar manutenção apenas muda no arquivo .properties entendeu ?

jyoshiriro

Pode me chamar de Yoshi, ok?

Então a solução é simples:

Crie um método público que retorne um objeto do tipo Map na action que é invocada antes do JSP com o combo ser renderizado.
Este método iria ler o arquivo .properties e repassar seu conteúdo para um objeto do tipo Map (mamão com açúcar). Dai, basta retornar este objeto no método :wink:

Tranquilo, né?

Espero ter ajudado.

jyoshiriro

Esqueci de uma coisa…

Na tag <s:select> o valor do atributo list será o “nome javabean” do método que vc criou.

Exemplo: Se o método é

public Map getValoresSuco() {...}

então sua tag na JSP ficaria

<s:select list="valoresSuco" .... />

ok?

jyoshiriro

Amigo,

não resisti e fiz uns testes aqui.

Esses dois códigos FUNCIONARAM perfeitamente:

Código 1:

public Map getTesteX() throws IOException { Map mapa = new HashMap(); mapa.put("1", "ovo"); mapa.put("2", "suco"); return mapa; }

Código 2:

public Properties getTesteY() throws IOException { Properties properties = new Properties(); properties.load(getClass().getResourceAsStream("teste.properties")); // O arquivo "teste.properties" deve estar no mesmo pacote da Action // Se usar "/teste.properties" a JVM procurará este arquivo no pacote raiz return properties; }

Dai, no JSP funcionou tanto o “testeX” quanto “testeY” no atributo list :wink:

Acredito que o que você queria está no Código 2, correto?

R

Yoshi era isso mesmo cara funcionou exatamente como eu queria valeu mano, mais uma duvida na hora que ele vai exibir na tela esta dando um erro acho que e o cast do properties naquele exemplo y que vc me passou como eu faço para eu converter esse .properties para ele exibir a String, acredito que o erro e porque esta chegando na jsp um valor properties e isso mesmo ?

java.lang.ClassCastException: java.util.Properties cannot be cast to java.lang.String
jyoshiriro

Amigo, só vendo no seu código para identificar o erro.

R

e aquele exemplo Código 2 que vc me passou

public Properties getTesteY() throws IOException {  
		        Properties properties = new Properties();  
		        properties.load(getClass().getResourceAsStream("/ApplicationResources.properties"));
		        return properties;  
		    }
jyoshiriro

Como você usou “/ApplicationResources.properties”, teste arquivo deve estar no pacote raiz, ok?

Manda o código do seu JSP pra eu ver o que pode estar causando o erro. Na Action não vejo erro algum.

R

aqui e o trecho da jsp

<td class="larguraCombo"><s:select theme="simple" id="status" multiple="true" list="#{0:'getTesteY.usuario'}" name="tbAssociacao" cssClass="larguraCombo"></s:select></td>

dentro do arquivo .properties esta assim

usuario = "usuario1","usuario2","usuario3"
jyoshiriro

ah... mas você não fez do jeito correto, meu amigo...

Lembre que os "combos" HTML são formados por chave e valor. Sendo que apenas a chave vai para a requisição.

No seu arquivo .properties deveria estar algo como

v1=Zé buduia
v2=Maria Bigodenha
v3=Cintura de Ovo

Dai, em seu JSP:

<s:select list="testeY" ..../>

O HTML gerado seria:

<select name="minhalista">
   <option value="v1"> buduia</option>
   <option value="v2">Maria Bigodenha</option>
   <option value="v3">Cintura de Ovo</option>
</select>
R

Yoshi valeu mano pela força que vc desmontrou uma vontade e interesse muito grande de me ajudar mais fiz todas essas alterações e nada ainda da um aquele mesmo erro no metodo que le o .properties

public Properties getTesteY() throws IOException {  
		        Properties properties = new Properties();  
		        properties.load(getClass().getResourceAsStream("/ApplicationResources.properties")); 
		        return properties;  
		    }
jyoshiriro

Amigo, o erro está no JSP e não na sua action.

Quando fiz como no seu deu o mesmo erro pra mim.

Outra coisa: você está fazendo uma chamada que chama a Action que deve conter o código de leitura do arquivo .properties e esta Action redireciona para o JSP com o <s:select/>. É assim que estás fazendo?

Criado 16 de setembro de 2009
Ultima resposta 17 de set. de 2009
Respostas 17
Participantes 3