Feliz Natal!
Então, estou com um problema aqui. É o seguinte, tenho uma página JSP que dispara alguns métodos assíncronos, em um deles, as propriedades do Bean não estão sendo populados…gostaria de uma ajuda!
JSP
<%@ taglib uri="/core" prefix="f" %>
<%@ taglib uri="/html" prefix="h" %>
<%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j" %>
<%@ page language="java" session="true" contentType="text/html; charset=ISO-8859-1" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<f:view>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<f:loadBundle basename="MessageResources" var="customMsg" />
<title><h:outputText value="#{customMsg.application_title}" /></title>
<link rel="stylesheet" type="text/css" href="../../css/portal.css">
<script language="JavaScript" src="/pcfi/js/common.js"></script>
<script type="text/javascript">
function validateAjax(campo) {
var obj_param = document.getElementById(campo);
if(obj_param.value=="" || obj_param.value<0)
return false;
else
return true;
}
function validateCadastro() {
var obj_codSup = document.getElementById("formCadastroMenu:codSuperior");
var obj_numOrd = document.getElementById("formCadastroMenu:numOrdenacao");
var obj_dcMenu = document.getElementById("formCadastroMenu:dcMenu");
var obj_dcUrl = document.getElementById("formCadastroMenu:dcUrl");
var bRetorno = true;
try {
if(obj_codSup.value=="-1" || obj_numOrd.value=="-1" || obj_dcMenu.value=="" || obj_dcUrl.value=="") {
bRetorno = false;
alert("Preencha todos os campos!");
}
}catch(e) {
alert(e.description);
}
return bRetorno;
}
</script>
</head>
<body class="body_home">
<%@ include file="/jsf/header.jsp" %>
<table width="80%" align="center" class="tbl_cont" border="0">
<tr class="tr2">
<td width="100%" align="left" colspan="2"><h:outputText value="#{customMsg.controle_menu_TITULO}" /></td>
</tr>
<tr>
<td>
<div class="cont1">
<h:form id="formCadastroMenu">
<table width="100%" border="0" cellpadding="4">
<tr class="tr4">
<td colspan="3"> <h:outputText value="#{customMsg.controle_menu_CADASTRO}" /></td>
</tr>
<tr>
<td colspan="3">
<a4j:outputPanel ajaxRendered="true">
<h:message for="codSuperior" styleClass="erro_cfi" />
<h:message for="numOrdenacao" styleClass="erro_cfi" />
</a4j:outputPanel>
</td>
</tr>
<tr>
<td width="35%">
<h:outputText value="#{customMsg.controle_usuario_CADASTRO_SUPERIOR}" />
<h:selectOneMenu style="width: 220px;" id="codSuperior" value="#{controleMenuBean.codSuperior}" styleClass="select1">
<f:selectItem itemLabel="S E L E C I O N E" itemValue="-1" />
<f:selectItems value="#{controleMenuBean.selCodSuperior}" />
<a4j:support immediate="false" event="onchange" onsubmit="if(!validateAjax('formCadastroMenu:codSuperior')){return false;};" action="#{controleMenuBean.getNumOrdem}" ajaxSingle="true" ignoreDupResponses="true" requestDelay="1000" reRender="numOrdenacao" limitToList="true" />
</h:selectOneMenu>
</td>
<td width="15%">
<h:outputText value="#{customMsg.controle_usuario_CADASTRO_ORDEM}" />
<h:selectOneMenu id="numOrdenacao" value="#{controleMenuBean.numOrdenacao}" disabled="true" styleClass="select1">
<f:selectItems value="#{controleMenuBean.numOrdem}" />
</h:selectOneMenu>
</td>
<td>
<a4j:outputPanel ajaxRendered="true">
<h:message for="formCadastroMenu" styleClass="erro_cfi" />
</a4j:outputPanel>
</td>
</tr>
<tr>
<td colspan="2">
<h:outputText value="#{customMsg.controle_usuario_CADASTRO_DESCRICAO}" />
<h:inputText value="#{controleMenuBean.dcMenu}" id="dcMenu" styleClass="input_text" size="40" required="true" />
</td>
<td>
<h:outputText value="#{customMsg.controle_usuario_CADASTRO_URL}" />
<h:inputText value="#{controleMenuBean.dcUrl}" id="dcUrl" styleClass="input_text" size="50" required="true" />
</td>
</tr>
<tr>
<td colspan="2">
<a4j:outputPanel ajaxRendered="true">
<h:message for="dcMenu" styleClass="erro_cfi" />
</a4j:outputPanel>
</td>
<td align="right">
<a4j:outputPanel ajaxRendered="true">
<h:message for="dcUrl" styleClass="erro_cfi" />
</a4j:outputPanel>
<input type="reset" value="Limpar" class="input_button2" id="btnClear" onclick="clearText();" />
<a4j:commandButton value="Cadastrar" styleClass="input_button2" id="btnCadMenu" action="#{controleMenuBean.incluirMenu}" onclick="if(!validateCadastro()){return false;};" ignoreDupResponses="true" ajaxSingle="true" requestDelay="1000" />
</td>
</tr>
</table>
</h:form>
<table width="100%">
<tr>
<td align="center">
<div id="loading" class="loading"><h:graphicImage value="#{customMsg.load_image}" /></div>
<a4j:status startText="#{customMsg.load_label}" startStyle="erro" onstart="changeVisibilityDiv('loading', 'visible');" onstop="changeVisibilityDiv('loading', 'hidden');"></a4j:status>
</td>
</tr>
</table>
</body>
</f:view>
</html>
Bean
public class ControleMenuBean {
private List<MenuVO> listMenu = null;
private int codSuperior;
private int numOrdenacao;
private String dcMenu = null;
private String dcUrl = null;
private List<SelectItem> numOrdem = null;
private List<SelectItem> selCodSuperior = null;
/**
* @return the dcUrl
*/
public String getDcUrl() {
return dcUrl;
}
/**
* @param dcUrl the dcUrl to set
*/
public void setDcUrl(String dcUrl) {
this.dcUrl = dcUrl;
}
/**
* @return the dcMenu
*/
public String getDcMenu() {
return dcMenu;
}
/**
* @param dcMenu the dcMenu to set
*/
public void setDcMenu(String dcMenu) {
this.dcMenu = dcMenu;
}
/**
* @return the codSuperior
*/
public int getCodSuperior() {
return codSuperior;
}
/**
* @param codSuperior the codSuperior to set
*/
public void setCodSuperior(int codSuperior) {
this.codSuperior = codSuperior;
}
/**
* @return the numOrdenacao
*/
public int getNumOrdenacao() {
return numOrdenacao;
}
/**
* @param numOrdenacao the numOrdenacao to set
*/
public void setNumOrdenacao(int numOrdenacao) {
this.numOrdenacao = numOrdenacao;
}
public String incluirMenu() {
MenuBO menuBO = new MenuBO();
try {
menuBO.insereNovoMenu(codSuperior, numOrdenacao, dcMenu, dcUrl);//Essas benditas propriedades estão vindo sempre vazias!
}catch(Throwable t) {
MBeanUtil.logError("Erro ao inserir um novo menu", t);
MBeanUtil.addMessage("formCadastroMenu", "Ocorreu um erro na tentativa de incluir o menu: " + t.getMessage());
}
return null;
}
}