Problema: JSF IBM

0 respostas
aleqi200

Olá a todos, estou enfrentando um problema que vem me tirando o sono, o corre o seguinte:
Tenho dois selectOneMenu’s, onde com a seleção do primeiro, o outro é populado por meio de ajax, descrito da seguinte forma na jsp:

<h:form id="form"> <hx:scriptCollector> <h:selectOneMenu value="#{canalBean.bank}" id="bank" required="true"> <f:selectItems value="#{canalBean.bancos}"/> <hx:inputHelperAssist errorClass="selectOneMenu_Error" id="assist1" validation="true"/> </h:selectOneMenu> <h:message for="bank"/> <hx:behavior event="onchange" target="bank" behaviorAction="get" targetAction="toRefresh"></hx:behavior> <hx:panelBox id="toRefresh" > <h:selectOneMenu disabled="#{empty canalBean.canais}" id="canal" value="#{canalBean.canal}" size="1"> <f:selectItems value="#{canalBean.canais}"/> </h:selectOneMenu> <h:message for="canal"/> </hx:panelBox> <hx:ajaxRefreshRequest target="toRefresh" id="ajaxRefreshRequest1" params="bank"> </hx:ajaxRefreshRequest> <hx:commandExButton type="submit" id="registra" action="#{canalBean.registraCanais}" value="OK"> </hx:commandExButton> </hx:scriptCollector> </h:form>

E em meu managedBean eu tenho isso:

public class CanalBean {

	private String bank;
	private String canal;
        //setters e getters
       public List<SelectItem> getCanais() {
		List<SelectItem> list = new ArrayList<SelectItem>();
		
		Map o = (Map)
		FacesContext.getCurrentInstance().getApplication().createValueBinding(
				"#{param}").getValue(FacesContext.getCurrentInstance());
		
		bank = (String) o.get("bank");
		System.out.println("buscou: " + bank);
		//por hora só processa o banco real
		if (bank != null) {
			if (bank.equals("OI")) {
                                //faz processamento aki
			}
		}
		return list;
	}

        public List<SelectItem> getBancos() {
		List<SelectItem> bancos = new ArrayList<SelectItem>();

		SelectItem s = new SelectItem("", "Selecione");
		bancos.add(s);
		s = new SelectItem("OI", "OI");
		bancos.add(s);
		s = new SelectItem("AKI", "AKI");
		bancos.add(s);
		return bancos;
	}

         public String registraCanais() {
		System.out.println("registraCanais()");
		
		int num = Integer.parseInt(canal);//aki ocorre um NullPointerException
						
		return "home";
	}

Ok, tudo funciona perfeitamente, quando eu seleciono uma opção no menu, o outro é populado, contudo, no momento que é efetuado o submit, o valor do segundo menu não é injetado no bean.
Por favor eu imploro, alguém me ajude! O que ocorre? O que eu posso fazer?

Criado 18 de março de 2008
Respostas 0
Participantes 1