Regarding two seam component sessions
flamingo Jun 15, 2010 5:41 AMI have two screens one displays all the parties and in another screen im going to select those parties
first screen is as follows
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich"
xmlns:a="http://richfaces.org/a4j"
xmlns:a4j="http://richfaces.org/a4j"
template="../layout/template.xhtml">
<ui:define name="body">
<div class="scroll">
<rich:extendedDataTable id="partyListTable" var="_party" rows="20" reRender="ds"
selectionMode="single" height="572px" width="1905px" selectedClass="selection"
value="#{parties}" rowKeyVar="row"
rendered="#{parties.rowCount > 0}" headerClass="head">
<f:facet name="header">#{messages['com.infyz.toms.entity.Customer']} #{messages['com.infyz.toms.properties.Registration']}</f:facet>
<rich:column width="25px">
<s:link ajaxSingle="true" id="editlink"
action="#{partyAction.selectParty}"
view="/admin_configuration_ordermanagement/IcPartyEdit.xhtml"
rendered="#{s:hasRole(messages['com.infyz.toms.role.admin.configuration.cargo_operations.party.edit']) and (empty from)}">
<h:graphicImage value="#{messages['com.infyz.toms.label.button.Edit']}" style="border:0" />
</s:link>
<rich:toolTip for="editlink" value="#{messages['com.infyz.toms.label.button.tooltip.Edit']}" />
#{' '}
<s:link view="/#{empty from ? '' : from}.xhtml"
propagation="#{empty from ? 'none' : 'default'}"
rendered="#{!empty from}"
action="#{partyAction.selectParty}"
id="party">
<h:graphicImage value="#{messages['com.infyz.toms.label.button.Select']}" style="border:0" length="15" width="15"/>
<f:param name="partyName" value="#{_party.partyName}"/>
</s:link>
<rich:toolTip for="party" value="#{messages['com.infyz.toms.label.button.tooltip.Select']}"/>
</rich:column>
<rich:column id="partyNumber" width="150px" sortable="true"
sortBy="#{_party.partyNumber}"
filterBy="#{_party.partyNumber}"
filterEvent="onkeyup" label=" #{messages['com.infyz.toms.properties.Customer_code']}">
<f:facet name="header">
<h:outputText styleClass="headerText" value=" #{messages['com.infyz.toms.properties.Customer_code']}"/>
</f:facet>
<h:outputText value="#{_party.partyNumber}"/>
</rich:column>
<rich:column id="partyName" width="170px" sortable="true"
sortBy="#{_party.partyName}"
filterBy="#{_party.partyName}"
filterEvent="onkeyup" label="#{messages['com.infyz.toms.properties.Customer_name']}">
<f:facet name="header">
<h:outputText styleClass="headerText" value=" #{messages['com.infyz.toms.properties.Customer_name']}"/>
</f:facet>
<h:outputText value="#{_party.partyName}"/>
</rich:column>
<rich:column id="taxId" width="110px" sortable="true"
sortBy="#{_party.taxId}"
filterBy="#{_party.taxId}"
filterEvent="onkeyup" label="#{messages['com.infyz.toms.properties.Tax_id']}">
<f:facet name="header">
<h:outputText styleClass="headerText" value=" #{messages['com.infyz.toms.properties.Tax_id']}"/>
</f:facet>
<h:outputText value="#{_party.taxId}"/>
</rich:column>
<rich:column id="address1" width="185px" sortable="true"
sortBy="#{_party.address1}"
filterBy="#{_party.address1}"
filterEvent="onkeyup" label="#{messages['com.infyz.toms.properties.Address1']}">
<f:facet name="header">
<h:outputText styleClass="headerText" value=" #{messages['com.infyz.toms.properties.Address1']}"/>
</f:facet>
<h:outputText value="#{_party.address1}"/>
</rich:column>
<rich:column id="address2" width="170px" sortable="true"
sortBy="#{_party.address2}"
filterBy="#{_party.address2}"
filterEvent="onkeyup" label="#{messages['com.infyz.toms.properties.Address2']}">
<f:facet name="header">
<h:outputText styleClass="headerText" value=" #{messages['com.infyz.toms.properties.Address2']}"/>
</f:facet>
<h:outputText value="#{_party.address2}"/>
</rich:column>
<rich:column id="address3" width="170px" sortable="true"
sortBy="#{_party.address3}"
filterBy="#{_party.address3}"
filterEvent="onkeyup" label="#{messages['com.infyz.toms.properties.Address3']}">
<f:facet name="header">
<h:outputText styleClass="headerText" value=" #{messages['com.infyz.toms.properties.Address3']}"/>
</f:facet>
<h:outputText value="#{_party.address3}"/>
</rich:column>
<rich:column id="city" width="170px" sortable="true"
sortBy="#{_party.icCity.code}"
filterBy="#{_party.icCity.code}"
filterEvent="onkeyup" label=" #{messages['com.infyz.toms.properties.City']}">
<f:facet name="header">
<h:outputText styleClass="headerText" value=" #{messages['com.infyz.toms.properties.City']}"/>
</f:facet>
<h:outputText value="#{_party.icCity.code}"/>
</rich:column>
<rich:column id="state" width="170px" sortable="true"
sortBy="#{_party.icState.code}"
filterBy="#{_party.icState.code}"
filterEvent="onkeyup" label="#{messages['com.infyz.toms.properties.State']}">
<f:facet name="header">
<h:outputText styleClass="headerText" value=" #{messages['com.infyz.toms.properties.State']}"/>
</f:facet>
<h:outputText value="#{_party.icState.code}"/>
</rich:column>
<rich:column id="country" width="170px" sortable="true"
sortBy="#{_party.icCountry.countryCode}"
filterBy="#{_party.icCountry.countryCode}"
filterEvent="onkeyup" label="#{messages['com.infyz.toms.entity.Country']}">
<f:facet name="header">
<h:outputText styleClass="headerText" value=" #{messages['com.infyz.toms.entity.Country']}"/>
</f:facet>
<h:outputText value="#{_party.icCountry.countryCode}"/>
</rich:column>
<rich:column id="zipCode" width="170px" sortable="true"
sortBy="#{_party.zipCode}"
filterBy="#{_party.zipCode}"
filterEvent="onkeyup" label="#{messages['com.infyz.toms.properties.Zip_code']}">
<f:facet name="header">
<h:outputText styleClass="headerText" value=" #{messages['com.infyz.toms.properties.Zip_code']}"/>
</f:facet>
<h:outputText value="#{_party.zipCode}"/>
</rich:column>
<rich:column id="comments" width="175px" sortable="true"
sortBy="#{_party.comments}"
filterBy="#{_party.comments}"
filterEvent="onkeyup" label="#{messages['com.infyz.toms.properties.Comments']}">
<f:facet name="header">
<h:outputText styleClass="headerText" value=" #{messages['com.infyz.toms.properties.Comments']}"/>
</f:facet>
<h:outputText value="#{_party.comments}"/>
</rich:column>
<rich:column id="FActive" width="70px" sortable="true"
sortBy="#{_party.FActive}" label="#{messages['com.infyz.toms.properties.F_active']}"
filterBy="#{_party.FActive}" filterEvent="onkeyup">
<f:facet name="header">
<h:outputText styleClass="headerText" value="#{messages['com.infyz.toms.properties.F_active']}"/>
</f:facet>
<h:outputText value="#{_party.FActive}"/>
</rich:column>
</rich:extendedDataTable>
</div>
</h:form>
</ui:define>
</ui:composition>and it's seam component is as foolows
@Stateful
@Name("partyAction")
@Scope(ScopeType.SESSION)
@SuppressWarnings("unchecked")
public class IcPartyAction implements IcPartyInterface {
@PersistenceContext(type=PersistenceContextType.EXTENDED)
private EntityManager em;
@In
private FacesMessages facesMessages;
@In(create=true)
User user;
@Logger
private Log log;
@In(required=false, create=true)
private CurrentDate currentDate;
@In(create=true)
PartyTypeInterface partyTypeAction;
private boolean managed;
private int rows = 20;
private int scrollerPage=1;
@DataModel("parties")
private List<IcParty> parties;
@DataModelSelection("parties")
@Out(value="party", required=false)
@In(value="party", required=false)
private IcParty selectedParty;
@Factory
public void getParties()
{
String qry = "select party from IcParty party order by party.partyName asc ";
parties = em.createQuery(qry).getResultList();
}
@Begin(join=true, flushMode=FlushModeType.MANUAL)
public void selectParty() {
selectedParty = em.find(IcParty.class, selectedParty.getPartyId());
managed = false;
}
public void setSelectedParty(IcParty selectedParty) {
log.info("............................................................set :"+selectedParty);
this.selectedParty = selectedParty;
}
public IcParty getSelectedParty()
{
return selectedParty;
}second screen is as follows
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
template="../layout/template.xhtml">
<ui:define name="body">
<h:form>
<rich:simpleTogglePanel switchType="ajax" headerClass="head">
<f:facet name="header" >Customer Visit Details</f:facet>
<table style="text-align: right;">
<tr>
<td>
<s:decorate id="number" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Customer_code']}</ui:define>
<h:inputText id="itNumber" disabled="true" size="15" value="#{party.partyNumber}"/>
<s:link value="#{messages['com.infyz.toms.label.Select']}" view="/admin_configuration_ordermanagement/IcPartyList.xhtml">
<f:param name="from" value="transportation_ocean/ItPartyVisitList"/>
</s:link>
</s:decorate>
</td>
<td>
<s:decorate id="name" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Customer_name']}</ui:define>
<h:inputText id="itName" value="#{party.partyName}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="group" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Customer_group']}</ui:define>
<h:inputText value="#{party.icPartyGroup.groupCode}" disabled="true"/>
</s:decorate>
</td>
</tr>
<tr>
<td>
<s:decorate id="address1" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Address1']}</ui:define>
<h:inputText id="itAddress1" size="30" value="#{party.address1}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="address2" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Address2']}</ui:define>
<h:inputText id="itAddress2" size="30" value="#{party.address2}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="city" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.City']}</ui:define>
<h:inputText value="#{party.icCity.code}" disabled="true"/>
</s:decorate>
</td>
</tr>
<tr>
<td>
<s:decorate id="state" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.State']}</ui:define>
<h:inputText value="#{party.icState.code}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="country" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Country']}</ui:define>
<h:inputText value="#{party.icCountry.countryCode}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="zip" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Zip_code']}</ui:define>
<h:inputText id="itZip" value="#{party.zipCode}" disabled="true"/>
</s:decorate>
</td>
</tr>
<tr>
<td>
<s:decorate id="contactPerson" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Contact_person']}</ui:define>
<h:inputText id="itContactPerson" value="#{party.contactPerson}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="tph1" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Telephone_one']}</ui:define>
<h:inputText id="itTph1" size="15" value="#{party.telephoneNo1}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="tph2" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Telephone_two']}</ui:define>
<h:inputText id="itTph2" size="15" value="#{party.telephoneNo2}" disabled="true"/>
</s:decorate>
</td>
</tr>
<tr>
<td>
<s:decorate id="mb1" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Mobile_one']}</ui:define>
<h:inputText id="itMb1" size="10" value="#{party.mobileNo1}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="mb2" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Mobile_two']}</ui:define>
<h:inputText id="itMb2" size="10" value="#{party.mobileNo2}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="natureOfBusiness" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Nature_of_business']}</ui:define>
<h:inputText value="#{party.icBusinessType.code}" disabled="true"/>
</s:decorate>
</td>
</tr>
<tr>
<td>
<s:decorate id="emailId" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Email_id']}</ui:define>
<h:inputText id="itEmailId" size="30" value="#{party.emailId}" disabled="true">
</h:inputText>
</s:decorate>
</td>
<td>
<s:decorate id="businessVolumePa" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Business_volume_pa']}</ui:define>
<h:inputText id="itBusinessVolumePa" size="15" value="#{party.businessVolumePa}" disabled="true"/>
</s:decorate>
</td>
</tr>
<tr style="text-align:left;color:#3090C7;">
<td>
<h3 class="section">Financial Details :</h3>
</td>
</tr>
<tr>
<td>
<s:decorate id="pan" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Pan_num']}</ui:define>
<h:inputText id="itPan" value="#{party.panNumber}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="tan" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Tan_num']}</ui:define>
<h:inputText id="itTan" value="#{party.tanNumber}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="bankAc" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Bank_account_num']}</ui:define>
<h:inputText id="itBankAc" value="#{party.bankAccountNumber}" disabled="true"/>
</s:decorate>
</td>
</tr>
<tr>
<td>
<s:decorate id="bankName" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Bank_name']}</ui:define>
<h:inputText value="#{party.icBank.bankName}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="branch" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Branch']}</ui:define>
<h:inputText id="itBranch" value="#{party.branch}" disabled="true"/>
</s:decorate>
</td>
<td>
<s:decorate id="ifsc" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.IFSC_code']}</ui:define>
<h:inputText id="itIfsc" size="15" disabled="true" value="#{party.ifsc}"/>
</s:decorate>
</td>
</tr>
<tr>
<td>
<s:decorate id="rtgs" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Rtgs_code']}</ui:define>
<h:inputText id="itRtgs" size="15" disabled="true" value="#{party.rtgsCode}"/>
</s:decorate>
</td>
<td>
<s:decorate id="paymentTerms" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Payment_terms']}</ui:define>
<h:inputText value="#{party.icTerms.number}" disabled="true"/>
</s:decorate>
</td>
</tr>
</table>
<h:panelGrid columns="1" style="text-align:right;">
<s:decorate id="comments" template="../layout/edit.xhtml">
<ui:define name="label">#{messages['com.infyz.toms.properties.Aditional_info']}</ui:define>
<h:inputTextarea id="itaComments" cols="72" rows="2" value="#{party.comments}" disabled="true"/>
</s:decorate>
</h:panelGrid>
</rich:simpleTogglePanel></ui:define>
</ui:composition>and it's seam component is
@Stateful
@Name("itPartyVisitAction")
@Scope(ScopeType.SESSION)
public class ItPartyVisitAction implements ItPartyVisitInterface{
@PersistenceContext(type = PersistenceContextType.EXTENDED)
private EntityManager em;
@Logger
private Log log;
@In
private FacesMessages facesMessages;
@In(create=true,required=false)
private SimpleQueueSender messageSender;
@In(create=true)
private IcPartyInterface partyAction;
@DataModel("partyVisit")
private List<ItPartyVisit> partyVisit;
@DataModelSelection("partyVisit")
@Out(required = false)
private ItPartyVisit selectedPartyVisit;
public List<ItPartyVisit> getPartyVisit() {
return partyVisit;
}
public ItPartyVisit getSelectedPartyVisit() {
return selectedPartyVisit;
}
public void addNewParty()
{
partyAction.setSelectedParty(new IcParty());
log.info(".................................................................."+partyAction.getSelectedParty());
}}in first screen because of factory all the parties will be loaded it's fine when i first open this screen and then if i move to second screen first party is taken as selected party defaultly but i don't need this when i move to second screen it should be blank if i selected using link then only they have to be populated for that i am calling the addNewParty method of partyVisit when i click the menuitem which opens the second screen
<rich:menuItem submitMode="ajax" value="Customer Visit" action="#{itPartyVisitAction.addNewParty}"
onclick="document.location.href='http://192.168.1.12:8080/toms/transportation_ocean/ItPartyVisitList.seam'"/>but im not succeded
thank you in advance