Below are the files I have.
manageStaff.xhtml
<h:dataTable var="c" value="#{newStaffMemberServiceBean.newStaffMemberDataBeanList}"
styleClass="order-table"
headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row"
border="1" id="staffListDataTable" width="100%">
<h:column>
<f:facet name="header">
Staff Member Name
</f:facet>
<h:form>
<h:commandLink action="viewStaffMemberProfileData" value="#{c.firstName}">
<f:setPropertyActionListener target="#{newStaffMemberServiceBean.userId}" value="XXXYYYZZZZ"/>
</h:commandLink>
</h:form>
</h:column>
</h:dataTable>
viewStaffMemberProfileData.xhtml
My Name is -<h:outputText value="#{newStaffMemberServiceBean.userId}" />-
NewStaffMemberServiceBean.java
@ManagedBean(name = "newStaffMemberServiceBean")
//@RequestScoped
@ViewScoped
//@SessionScoped
public class NewStaffMemberServiceBean {
private String userId;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
In output what I get is in below format
Staff Member Name
++++++++++++++++++
Name 1
Name 2
Name 3
.
.
.
.
On Clicking Name 1, I get re-directed to viewStaffMemberProfileData.xhtml.
BUT problems are
-
To get re-directed on
viewStaffMemberProfileData.xhtmlpage, I have to click link (Name 1, Name 2, etc) twice 🙁 -
When I get re-directed to
viewStaffMemberProfileData.xhtmlI only see output asMy Name is --What I want is
My Name is -XXXYYYZZZZ-.
Suggest me where I am going wrong.
NOTE
I have all beans in ViewScope.
Update 1
@prajeeshkumar
Getter setter are as below
public List<NewStaffMemberDataBean> getNewStaffMemberDataBeanList() {
return newStaffMemberDataBeanList;
}
public void setNewStaffMemberDataBeanList(List<NewStaffMemberDataBean> newStaffMemberDataBeanList) {
this.newStaffMemberDataBeanList = newStaffMemberDataBeanList;
}
The reason for this behavior is the view scope of the newStaffMemberServiceBean , its being destroyed and created again… so the value is being nullified… here an alternative solution:
haven’t tried this one, But worth trying
change
into
and in viewStaffMemberProfileData.xhtml
add this before the
<h:head>you can also add
<f:event type="preRenderView" listener="#{newStaffMemberServiceBean.init}" />to thef:metadatain order to do some init…based on this BalusC great article – Communication in JSF 2.0
OR
you can turn the scope of newStaffMemberServiceBean into SessionScope…