Hi all, I can not understand conversation context.
I have two pages, in first I select one vendor and in second I want to edit vendors name. In first page I start long running conversation in SFSB and create the vendor in @Out property, than transfer to second page. But this page can not find the vendor and create new. Also create and new session bean. Why !?
That is source:
first page where I start the conversation:
<h:commandLink value="edit"
action="#{vendorDetailAction.editSelectedVendor(vendor.idVendor)}">
</h:commandLink>
StateFull Session Bean is...
@Stateful
@Conversational()
@Name("vendorDetailAction")
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class VendorDetailAction implements VendorDetailManager, Serializable {
@PersistenceContext(type = PersistenceContextType.EXTENDED)
private EntityManager em;
@In(create=true)
@Out
private Vendor vendor;
@Begin
public String editSelectedVendor(Long vendorId)
{
vendor = em.find(Vendor.class, vendorId);
return "edit";
}
@End
@Remove @Destroy
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public String detailConfirm() {
vendor = null;
return "success";
}
and second page can not find this outjected vendor.
Hier is created new empty vendor.
<h:inputText value="#{vendor.name}" id="vendorName" required="true"/>
also second page can not find and SFSB
and create new SFSB when click on this link
<s:link action="#{questionDetailAction.createNewQuestion(vendor)}"
value="#{msg.new_label}"/>
Where is my mistake?
Sorry for my english... and 10x