Alguém tem um exemplo de como eu poderia fazer isso no struts 2, sem ser usando DWR?
Vou colocar um exemplo que eu fiz, espero que ajude
- Crie uma action com o seguinte conteudo:
private int idCertificacao; //vai conter o id selecionado no combo master
private int idCompetencia; //vai conter o id selecionado no combo slave
private ArrayList<Certificacao> certificacoes; //array para o combo master
private ArrayList<Competencia> competencias; //array para o combo slave
public ArrayList<Competencia> getCompetencias() {
OgnlValueStack stack = (OgnlValueStack)
ServletActionContext.getValueStack(ServletActionContext.getRequest());
Object tipoCert = stack.findValue("top");
if(tipoCert!=null && tipoCert instanceof Certificacao) {
//objeto selecionado no combo master
Certificacao cert = (Certificacao)tipoCert;
competencias = //aqui voce pega o array de competencia com base na certificacao cert
}
//competencias = competenciaDao.listaTodasCompetencia(cpf,idCertificacao);
return competencias;
}
public ArrayList<Certificacao> getCertificacoes() {
//apenas as certificacoes do gestor
String cpf = request.getRemoteUser();
certificacoes = //pega o array de certificacoes do banco de dados
return certificacoes;
}
nao se esqueça dos get e set para todos os atributos
- Na pagina jsp coloque a seguinte tag
<tr>
<td>Certificação</td>
<td rowspan="2"><s:doubleselect
label="Certificacao"
name="idCertificacao"
list="certificacoes"
listKey="id"
listValue="nome"
value="'id'"
doubleValue="'id'"
doubleList="competencias"
doubleListKey="id"
doubleListValue="nome"
doubleName="idCompetencia"
theme="simple" /></td>
</tr>
<tr>
<td>Competência</td>
</tr>
Tente adaptar conforme sua necessidade
Por que o value é assim? value="'id'"
ele não pode ser propriedade de um bean declarado na página?
Onde eu coloco o método que carrega a outra coleção?
Porque eu só carrego o segundo dependendo do valor do primeiro…
Funcionou perfeitamente!!Mas gostaria de saber se tenho que declarar novas propriedades ou posso setar em um bean, como faço faço no JSF?
esse “id” eh do objeto Certificacao ou Competencia
Geralmente no combo eu uso id para o valor retornado pelo combo
Certificacao ou Competencia tambem tem um atributo “nome” que eu uso para exibir a lista de elementos
do combo.
Nao entendi o que voce disse sobre novas propriedades
Por exemplo tive que declarar na minha Action dois atributos idInstituicao e idcurso.
Não poderia fazer
instituicaoModel.id
instituicaoModel.cursoModel.id
???