Eu estou desenvolvendo uma aplicação de exemplo utilizando JSF + Spring + Hibernate. A integração entre os frameworks está funcionando sem problemas, porém estou enfrentando um problema básico que não estou conseguindo resolver e, graças a ele, o desenvolvimento está parado.
O problema é o seguinte: eu tenho uma classe chamada UserContactForm, ela é a responsável por efetuar a comunicação com a camada view da aplicação. Nesta classe eu possuo um objeto chamado userContact, que é o JavaBean que desejo popular. O objeto serviceManager é injetado pelo Spring sem problemas.
A classe está da seguinte maneira:
public class UserContactForm {
private UserContact userContact;
private ServiceManager serviceManager;
public UserContactForm() {
userContact = new UserContact();
}
public String save() {
System.err.println(userContact.getUserContactName());
System.err.println(userContact.getUserContactAddress());
System.err.println(userContact.getUserContactBirthday());
//this.serviceManager.save(userContact);
return "success";
} // Finaliza o método save.
public UserContact getUserContact() {
return userContact;
} // Finaliza o método getUserContact.
public void setUserContact(UserContact userContact) {
this.userContact = userContact;
} // Finaliza o método setUserContact.
public ServiceManager getServiceManager() {
return serviceManager;
} // Finaliza o método getServiceManager.
public void setServiceManager(ServiceManager serviceManager) {
this.serviceManager = serviceManager;
} // Finaliza o método setServiceManager.
}
Porém o problema é o seguinte, ao efetuar uma chamada ao método save da classe, todas as propriedades do bean userContact está nulas, não recebendo os parâmetros do form.
Como eu faço para que o bean userContact passe a ser populado com os dados digitados no formulário da página JSP?
form.jsp
...
<h:form>
<h:inputHidden id="userContactId" value="#{form.userContact.userContactId}">
<f:convertNumber/>
</h:inputHidden>
<table align="center" class="form">
<tr>
<th colspan="2"><h:outputLabel value="#{text['form.info']}"/></th>
</tr>
<tr>
<td><h:outputLabel for="userContactName" value="#{text['form.name']}"/></td>
<td><h:inputText id="userContactName" value="#{form.userContact.userContactName}" size="40" maxlength="40"/></td>
</tr>
<tr>
<td><h:outputLabel for="userContactAddress" value="#{text['form.address']}"/></td>
<td><h:inputText id="userContactAddress" value="#{form.userContact.userContactAddress}" size="40" maxlength="40"/></td>
</tr>
<tr>
<td><h:outputLabel for="userContactBirthday" value="#{text['form.birthday']}"/></td>
<td><h:inputText id="userContactBirthday" value="#{form.userContact.userContactBirthday}" size="15" maxlength="10"/></td>
</tr>
<tr>
<td> </td>
<td>
<h:commandButton value="#{text['button.save']}" action="#{form.save}" id="save" immediate="true"/>
<h:commandButton value="#{text['button.cancel']}" action="cancel" id="cancel" immediate="true"/></td>
</tr>
</table>
</h:form>
...
faces-config.xml
...
<managed-bean>
<managed-bean-name>form</managed-bean-name>
<managed-bean-class>br.com.addressbook.web.UserContactForm</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>serviceManager</property-name>
<value>#{serviceManager}</value>
</managed-property>
</managed-bean>
...
Desde já agradeço a atenção e a ajuda de todos.