[jboss-user] [JBoss Seam] - h:commandButton and h:commandLink don't delegate conversatio

svadu do-not-reply at jboss.com
Thu Jan 25 19:04:47 EST 2007


Hi All,

I have the following problem. I have a conversation scoped bean:


  | @Name("regionAction")
  | @Scope(ScopeType.CONVERSATION)
  | public class RegionAction implements Serializable {
  | 
  | 	...
  | 
  | 	@In(required=false) @Out(required=false)
  | 	private Generalarticle selectedArticle;
  | 
  | 	/**
  | 	 * Current Region bean
  | 	 */
  | 	@Out(required=false)
  | 	@In(required=false)
  | 	@DataModelSelection
  | 	private RegionBean region;
  | 
  | 	@DataModel
  | 	private List<RegionBean> allRegions;
  | 
  | 	@Factory("allRegions")
  | 	@Begin(join=true)
  | 	public void loadAllRegions() {
  | 		m_logger.trace("Loading all regions");
  | 		this.allRegions = em.createQuery("from RegionBean as r")
  | 				.getResultList();
  | 	}
  | 
  | 	@Begin(join=true)
  | 	public String selectRegion(RegionBean aRegion) {
  | 		this.region = aRegion;
  | 		m_logger.debug("Current region is set to " + region);
  | 		return RESULT_SHOW_REGION;
  | 	}
  | 
  | 	public String submitEditGisArticle() {
  | 		if ( null != this.region ) {
  | 			if ( this.region.getGisArticle() == null) {
  | 				this.selectedArticle = createGisArticle(region);
  | 			} else if ( region.getGisArticle() != null ) {
  | 				this.selectedArticle = this.region.getGisArticle();
  | 			}
  | 		} else {
  | 			FacesMessages.instance().add("Region is not selected!");
  | 		}
  | 		m_logger.trace("submitEditGisArticle with #{selectedArticle} = #0", this.selectedArticle);
  | 		return RESULT_EDIT_ARTICLE;
  | 	}
  | }
  | 

>From my understanding conversation begins with the factory method (which also seems to be backed up by logs)
And I have the start page with the following:

	<s:link id="editLnk" value="#{message['edit']}" 
  | 		action="#{regionAction.submitEditGisArticle}" styleClass="texttoolbar"  />

In this case the result of regionAction.submitEditGisArticle leads me to the next page with the following:


  | <h:form id="editForm">
  | 	<h:inputText id="title" value="#{selectedArticle.title}" required="true"></h:inputText>
  | 	<h:inputTextarea id="mainTextId" value="#{selectedArticle.text}" />
  | 	<s:button id="submitBtn" value="save" action="success"></s:button>
  | </h:form>
  | <h:messages />
  | 

Now, this works fine (I get both region and selectedArticle carried across the conversation). But as soon as I replace s:link on the first page with the h:commandButton (I tried h:commandLInk as well) like this:

<h:form id="edtRgnArt">
  | 	<h:commandButton value="#{message['edit']}" action="#{regionAction.submitEditGisArticle}" />
  | </h:form>
  | 

Then logs, debugging and h:messages show that region is null inside submitEditGisArticle

Can anybody help with an advise what the problem might be?

I use myfaces(tried 1.1.4 and 1.1.5)+facelets(tried 1.1.11 and 1.1.12)+ajax4jsf(tried 1.0.5 and 1.0.6)+seam(tried 1.1.0 and 1.1.0) in all cases with the same result - the region bean is null.

Although the bean is null I still see this bean in a conversation context via debugger.xhtml:

Conversation Context (2)
  | allRegions
  | em
  | org.jboss.seam.core.conversation
  | org.jboss.seam.core.facesMessages
  | org.jboss.seam.core.persistenceContexts
  | region
  | regionAction


Any help is appreciated!

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4006610#4006610

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4006610



More information about the jboss-user mailing list