Bom dia,
Senhores, estou criando uma tela, onde serão cadastrados modelos de veiculos.
Para isso, preciso apenas das seguintes informações: Marca e o nome do Modelo, ex: Hyundai -> Sonata.
Na aplicação temos um cadastro de Marca, mas afim de agilizar a inserção dos Modelos, criei um botão ADD ao lado da combo marca, para assim que o usuário notar que tal marca não existe, ali mesmo ele já cadastra.
Pelo código baixo, suponhamos que eu saiba que a marca não existe na base de dados, e clique direto no botão ADD a tela é apresentada corretamente, mas se eu clicar no botão btnSave dá o seguinte erro:
/pages/modelo/create.xhtml @24,86 value="#{modeloBean.marca.descricao}": Target Unreachable, 'marca' returned null
E debugando, notei que a action do botão ADD nem chegou ao ManagedBean.
Realizando mais testes, percebi que para funcionar é necessário que antes de eu clicar no botão ADD, que eu informe a descrição do Modelo, ou seja, caso esteja nulo esse campo, não funciona.
Será que tem alguma forma de resolver isso??
Gostaria de clicar no botão ADD e cadastrar, independente de ter algo preenchido.
<ui:composition template="../template/template.xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<ui:define name="pageTitle">
<h:outputText value="#{rotulo.titulo}"></h:outputText>
</ui:define>
<ui:define name="content">
<h:form id="form" prependId="true">
<p:panel header="Cadastro de Modelos">
<h:panelGrid id="grid" columns="4">
<h:outputLabel for="marca" value="#{rotulo.marca}" > </h:outputLabel>
<h:selectOneMenu id="marca" value="#{modeloBean.modelo.marca.idMarca}" validatorMessage="#{rotulo.marca_required}" required="true">
<f:selectItems value="#{modeloBean.marcas}"/>
</h:selectOneMenu>
<p:commandButton image="add" action="#{modeloBean.createMarca}" onclick="dialog.show()" update="frmMarca"/>
<p:message for="marca" />
<h:outputLabel for="modelo" value="#{rotulo.modelo}" />
<p:inputText id="modelo" validatorMessage="#{rotulo.modelo_required}" value="#{modeloBean.modelo.descricao}" size="30" maxlength="30" required="true" />
<p:message for="modelo" />
</h:panelGrid>
<br />
<p:commandButton id="btnSalvar" action="#{modeloBean.save}" value="#{rotulo.botao_salvar}" image="ui-icon ui-icon-disk" ajax="false"/>
<p:commandButton id="btnVoltar" action="#{modeloBean.list}" value="#{rotulo.botao_voltar}" image="ui-icon ui-icon-close" ajax="false" immediate="true"/>
</p:panel>
</h:form>
<p:dialog widgetVar="dialog" modal="true" header="Cadastro de Marcas" resizable="false">
<h:form id="frmMarca" prependId="true" style="font-size: 12px;">
<h:panelGrid id="grid" columns="1">
<h:outputLabel for="marca" value="#{rotulo.marca}" />
<p:inputText id="marca" value="#{modeloBean.marca.descricao}" required="true" />
<p:message for="marca" />
</h:panelGrid>
<br />
<p:commandButton id="btnSave" action="#{modeloBean.saveMarca}" value="#{rotulo.botao_salvar}" oncomplete="dialog.hide()" image="ui-icon ui-icon-disk" update="frmMarca, frmMarca:marca" ajax="false"/>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>
Desde já agradeço.