@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