@Out problem (Seam 1.2.1)
bsmithjj Jun 21, 2007 2:39 PMI'm probably missing something trivial, but I am stuck with an @Out issue and hopefully someone can point something out.
First, I have a Seam component that is JavaBean; annotated as such:
@Name("evergreenUser")
@Roles( {
 @Role(name="accessRequestUser", scope=ScopeType.CONVERSATION),
 @Role(name="userToClone")
} )
public class EvergreenUser implements Serializable {
 ...
}I have a method in a SFSB that will, based on the value of a @RequestParameter, here is the relative code:
@Stateful
@Name("accessRequestManager2")
public class AccessRequestManager2Bean implements AccessRequestManager2 {
 @Logger
 private Log log;
 @PersistenceContext(unitName = "accessControlDatabase")
 private EntityManager em;
 @In
 private UserPrincipal userPrincipal;
 @In(required = false)
 @Out
 private Integer currentStep;
 @In
 private Conversation conversation;
 @In(create = true)
 private DraftAccessRequestMaster draftAccessRequestMaster;
 @RequestParameter
 private String selectedUserId;
 @Out
 private List<String> errors = new ArrayList<String>();
 @Out(required = false)
 private EvergreenUser accessRequestUser;
 /**
 * Start a new add-access request. This method also generates the conversationId to
 * use in the conversation that beans of this class are associated with.
 */
 @Begin(id = "DraftAccessRequestID:#{draftAccessRequestMaster.id}", join = true)
 public void startAddRequest() {
 log.info("startAddRequest()");
 draftAccessRequestMaster.setCurrentStep(
 currentStep = 1
 );
 }
 /**
 * Step 2.
 * Select user to clone (optional)
 * Select 1-or-more applications and entitlements
 */
 public void editAccessRequestDetails() {
 if (selectedUserId == null) {
 log.error("User not Selected...TODO - bounce back to step 1.");
 }
 log.info("selectedUserId -> " + selectedUserId);
 accessRequestUser = QueryEPeopleUtil.findUserByUid(selectedUserId);
 log.info("accessRequestUser -> " + accessRequestUser);
 draftAccessRequestMaster.setCurrentStep(
 currentStep = 2
 );
 }
 ....
}And I use an <s:link ... /> tag to call editAccessRequestDetails()
 <s:link value="#{eUser.name}"
 action="#{accessRequestManager2.editAccessRequestDetails}" propagation="join">
 <f:param value="#{eUser.anumber}" name="selectedUserId"/>
 </s:link>
I also have a navigation rule in pages.xml so that when editAccessRequestDetails() is called, another page is displayed
 <page view-id="/user_access_request_step_1.xhtml">
 <navigation from-action="#{accessRequestManager2.editAccessRequestDetails}"
 evaluate="#{draftAccessRequestMaster.currentStep}">
 <rule if-outcome="1">
 <redirect view-id="/user_access_request_step_1.xhtml"/>
 </rule>
 <rule if-outcome="2">
 <redirect view-id="/user_access_request_step_2.xhtml"/>
 </rule>
 </navigation>
 <navigation from-action="#{accessRequestManager2.cancel}">
 <redirect view-id="/index.xhtml"/>
 </navigation>
 </page>
I want to display the @Out-jected accessRequestUser on user_access_request_step_2.xhtml (which is where we land after clicking the s:link)
(from user_access_request_step_2.xhtml)
#{accessRequestUser.name}
... more markup ....
<h:outputText value="#{accessRequestUser}"/>
etc...
I can see from the log file that the SFSB method is being called, and that the accessRequestUser is being populated by my code, however, the user_access_request_step_2.xhtml page is not able to 'find' the accessRequestUser in any scope (display of attributes or the entire instance is blank). I must be missing something, I've looked this over and over and I can't figure out why @Out isn't working ... help?
Thanks,
Brad Smith
