0

I do have two JSF pages, one for "User" and one for "Address".

The one for User looks like this:

<h:body>
   <h:form id="UserForm" name="UserCreate">
<p:panelGrid id="userPanel" rendered="true" columns="4" layout="tabular">
<p:outputLabel escape="true" rendered="true" for="firstName" value="firstName"/> <p:inputText maxlength="200" size="0" immediate="false" required="false" disabled="false" id="firstName" readonly="false" rendered="true" value="#{userCRBean.user.firstName}"/>
<p:outputLabel escape="true" rendered="true" for="lastName" value="lastName"/> <p:inputText maxlength="200" size="0" immediate="false" required="false" disabled="false" id="lastName" readonly="false" rendered="true" value="#{userCRBean.user.lastName}"/>
<p:outputLabel escape="true" rendered="true" for="username" value="username"/> <p:inputText maxlength="200" size="0" immediate="false" required="false" disabled="false" id="username" readonly="false" rendered="true" value="#{userCRBean.user.username}"/>
<p:outputLabel escape="true" rendered="true" for="password" value="password"/> <p:inputText maxlength="200" size="0" immediate="false" required="false" disabled="false" id="password" readonly="false" rendered="true" value="#{userCRBean.user.password}"/>
<p:outputLabel escape="true" rendered="true" for="id" value="id"/> <p:inputText maxlength="200" size="0" immediate="false" required="false" disabled="false" id="id" readonly="true" rendered="true" value="#{userCRBean.user.id}"/>
<p:outputLabel escape="true" rendered="true" for="createdOn" value="createdOn"/> <p:calendar disabledWeekends="false" effectDuration="normal" maxHour="23" maxlength="2147483647" maxMinute="59" maxSecond="59" minHour="0" minMinute="0" minSecond="0" mode="popup" navigator="false" pages="1" pattern="MM/dd/yyyy" readonlyInput="false" selectOtherMonths="false" showButtonPanel="false" showOn="both" showOtherMonths="false" showWeek="false" stepHour="1" stepMinute="1" stepSecond="1" timeOnly="false" immediate="false" required="false" disabled="false" id="createdOn" readonly="false" rendered="true" value="#{userCRBean.user.createdOn}"/>
<p:outputLabel escape="true" rendered="true" for="lastModified" value="lastModified"/> <p:calendar disabledWeekends="false" effectDuration="normal" maxHour="23" maxlength="2147483647" maxMinute="59" maxSecond="59" minHour="0" minMinute="0" minSecond="0" mode="popup" navigator="false" pages="1" pattern="MM/dd/yyyy" readonlyInput="false" selectOtherMonths="false" showButtonPanel="false" showOn="both" showOtherMonths="false" showWeek="false" stepHour="1" stepMinute="1" stepSecond="1" timeOnly="false" immediate="false" required="false" disabled="false" id="lastModified" readonly="false" rendered="true" value="#{userCRBean.user.lastModified}"/>
<p:commandButton id="submit" type="submit" style="" value="Submit" icon="ui-icon-disk" actionListener="#{userCRBean.saveRecord}"/>
</p:panelGrid>
</h:form>
</h:body>

The one for Address looks like this:

<h:body>
<h:form id="AddressForm" name="AddressCreate">
<p:panelGrid id="addressPanel" rendered="true" columns="4" layout="tabular">
<p:outputLabel escape="true" rendered="true" for="city" value="city"/> <p:inputText maxlength="200" size="0" immediate="false" required="false" disabled="false" id="city" readonly="false" rendered="true" value="#{addressCRBean.address.city}"/>
<p:outputLabel escape="true" rendered="true" for="country" value="country"/> <p:inputText maxlength="200" size="0" immediate="false" required="false" disabled="false" id="country" readonly="false" rendered="true" value="#{addressCRBean.address.country}"/>
<p:outputLabel escape="true" rendered="true" for="street" value="street"/> <p:inputText maxlength="200" size="0" immediate="false" required="false" disabled="false" id="street" readonly="false" rendered="true" value="#{addressCRBean.address.street}"/>
<p:outputLabel escape="true" rendered="true" for="id" value="id"/> <p:inputText maxlength="200" size="0" immediate="false" required="false" disabled="false" id="id" readonly="true" rendered="true" value="#{addressCRBean.address.id}"/>
<p:outputLabel escape="true" rendered="true" for="createdOn" value="createdOn"/> <p:calendar disabledWeekends="false" effectDuration="normal" maxHour="23" maxlength="2147483647" maxMinute="59" maxSecond="59" minHour="0" minMinute="0" minSecond="0" mode="popup" navigator="false" pages="1" pattern="MM/dd/yyyy" readonlyInput="false" selectOtherMonths="false" showButtonPanel="false" showOn="both" showOtherMonths="false" showWeek="false" stepHour="1" stepMinute="1" stepSecond="1" timeOnly="false" immediate="false" required="false" disabled="false" id="createdOn" readonly="false" rendered="true" value="#{addressCRBean.address.createdOn}"/>
<p:outputLabel escape="true" rendered="true" for="lastModified" value="lastModified"/> <p:calendar disabledWeekends="false" effectDuration="normal" maxHour="23" maxlength="2147483647" maxMinute="59" maxSecond="59" minHour="0" minMinute="0" minSecond="0" mode="popup" navigator="false" pages="1" pattern="MM/dd/yyyy" readonlyInput="false" selectOtherMonths="false" showButtonPanel="false" showOn="both" showOtherMonths="false" showWeek="false" stepHour="1" stepMinute="1" stepSecond="1" timeOnly="false" immediate="false" required="false" disabled="false" id="lastModified" readonly="false" rendered="true" value="#{addressCRBean.address.lastModified}"/>
<p:commandButton id="submit" type="submit" style="" value="Submit" icon="ui-icon-disk" actionListener="#{addressCRBean.saveRecord}"/>
</p:panelGrid>
</h:form>
</h:body>

The according Bean for User:

@ManagedBean(name = "userCRBean")
@ViewScoped
public class UserCRBean implements Serializable {

  @ManagedProperty(value = "#{userService}")
  private UserService userService = new UserService(); 

  private User user = new User();

  @PostConstruct
  public void init() {
    kuser.setCreatedOn(new Date());
    kuser.setLastModified(new Date());
  }

  public UserService getUserService() {
    return userService;     
  }

  public void setUserService(UserService userService) {
    this.userService = userService;
  }

  public User getUser() {
    return this.user;
  }

  public void setUser(User user) {
    this.user = user;
  }

  public void saveRecord() {
    System.out.println("Entity = ");
    System.out.println(this.user.toString());
    userService.save(user);
  }
}

And the Bean for Address:

@ManagedBean(name = "addressCRBean")
@ViewScoped
public class AddressCRBean implements Serializable {

  @ManagedProperty(value = "#{addressService}")
  private AddressService addressService = new AddressService(); 

  private Address address = new Address();

  @PostConstruct
  public void init() {
    address.setCreatedOn(new Date());
    address.setLastModified(new Date());
  }

  public AddressService getAddressService() {
    return addressService;      
  }

  public void setAddressService(AddressService addressService) {
    this.addressService = addressService;
  }

  public Address getAddress() {
    return this.address;
  }

  public void setAddress(Address address) {
    this.address = address;
  }

  public void saveRecord() {
    System.out.println("Entity = ");
    System.out.println(this.address.toString());
    addressService.save(address);
  }

}

Funny thing is, clicking the submit button on the "Address" page works fine. Clicking the submit button on the "User" page does not call the according "saveRecord" method and doesn't throw any exception. Any idea what might be the difference between the two submit buttons?

Sebastian Lang
  • 492
  • 1
  • 6
  • 18
  • 1
    `escape="true"`, `rendered="true"`, `disabled="false"` and `readonly="false"` are already set to `true` and `false` accordingly. Your code would be much less verbose without it. – ForguesR May 13 '15 at 13:56

1 Answers1

1

The reason it doesn't work is because of an incorrect date pattern in the User page. Look for :

pattern="MM/dd/yyyy`enter code here`"

And replace it by :

pattern="MM/dd/yyyy"

Also when "nothing happens", have a look at the JavaScript console. Very often you'll find something helpful to troubleshoot your problem.

ForguesR
  • 3,558
  • 1
  • 17
  • 39