Arquivo properties struts 2

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>

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

[]s

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

mas exibir na tela onde???

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

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>

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?

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 ?

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.

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?

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?

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

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

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;  
		    }  

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.

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"

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:

[code]

Zé buduia Maria Bigodenha Cintura de Ovo [/code]

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;  
		    }  

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?