[jboss-user] [JBoss Seam] - What did I make wrong with s:link????
german.delacruz
do-not-reply at jboss.com
Thu Aug 3 22:36:13 EDT 2006
Hi people
I've fighting for a couple of days with a page. In a few words, I've a page that has a datatable, and 2 more sections that are rendered each one depending of the selected action
This is my page....
|
| <!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:ui="http://java.sun.com/jsf/facelets"
| xmlns:h="http://java.sun.com/jsf/html"
| xmlns:f="http://java.sun.com/jsf/core"
| xmlns:s="http://jboss.com/products/seam/taglib"
| template="/WEB-INF/templates/template.xhtml">
|
| <!-- content -->
|
| <ui:define name="content">
| <div class="section">
| <h:form id="searchForm">
| <span class="errors"><h:messages globalOnly="true"/></span>
| <h1>Buscar Padron</h1>
| <fieldset>
| <h:inputText value="#{personController.searchString}" style="width: 165px;"/>
| <h:commandButton value="Buscar Padron" action="personCRUD" styleClass="button"/>
| </fieldset>
| </h:form>
| </div>
|
|
| <div class="section">
| <h:form id="dataTableForm">
| <h:outputText value="No se encontraron datos" rendered="#{model != null and model.rowCount==0}"/>
| <br/>
| <s:link value="Crear nuevo" action="#{personEditor.createEntity}" buttonClass="button" linkStyle="button"/>
| <br/>
| <h:dataTable value="#{model}" var="e" rendered="#{model.rowCount>0}">
| <h:column>
| <f:facet name="header">Razon social</f:facet>
| #{e.razonSocial}
| </h:column>
| <h:column>
| <f:facet name="header">CUIT/CUIL</f:facet>
| #{e.fiscalID}
| </h:column>
| <h:column>
| <f:facet name="header">Action</f:facet>
|
| <h:commandButton action="#{personEditor.displayEntity}" styleClass="button" value="ver"/>
| <h:commandButton action="#{personEditor.updateEntity}" styleClass="button" value="modificar"/>
| <h:commandButton action="#{personEditor.removeEntity}" styleClass="button" value="eliminar"/>
| </h:column>
| </h:dataTable>
| </h:form>
| </div>
|
| <f:subview rendered="#{personEditor.entity!=null and (personEditor.currentOperation=='DISPLAY' or personEditor.currentOperation=='REMOVE') }">
| <div class="section">
| <h1>View Hotel</h1>
| </div>
| <div class="section">
| <div class="entry">
| <div class="label">CUIT/CUIL</div>
| <div class="output">#{personEditor.entity.fiscalID}</div>
| </div>
| <div class="entry">
| <div class="label">Razon Social:</div>
| <div class="output">#{personEditor.entity.razonSocial}</div>
| </div>
| <div class="entry">
| <div class="label">Nombre Completo:</div>
| <div class="output">#{personEditor.entity.completeName}</div>
| </div>
| </div>
| <h:form id="staticForm">
| <div class="entry">
| <div class="label"><f:verbatim> </f:verbatim></div>
| <div class="input">
| <h:commandButton value="Eliminar" action="#{personEditor.perform}" styleClass="button" rendered="#{personEditor.currentOperation=='REMOVE'}"/>
| <s:link value="Volver" action="#{personEditor.cleanState}" buttonClass="button" linkStyle="button"/>
| </div>
| </div>
| </h:form>
| </f:subview>
|
|
| <f:subview rendered="#{personEditor.entity!=null and (personEditor.currentOperation=='UPDATE' or personEditor.currentOperation=='CREATE')}">
| <div class="section">
| <h1>View Hotel</h1>
| </div>
| <h:form id="dynamicForm">
| <s:validateAll>
| <div class="entry">
| <div class="label"><h:outputLabel for="fiscalID">CUIT/CUIL:</h:outputLabel></div>
| <div class="input">
| <h:inputText id="fiscalID" value="#{personEditor.entity.fiscalID}" required="true">
|
| </h:inputText>
| <br/><span class="errors"><h:message for="fiscalID"/></span>
| </div>
| </div>
| <div class="entry">
| <div class="label"><h:outputLabel for="razonSocial">Razon Social</h:outputLabel></div>
| <div class="input">
| <h:inputText id="razonSocial" value="#{personEditor.entity.razonSocial}" required="true">
| </h:inputText>
| <br/><span class="errors"><h:message for="razonSocial"/></span>
| </div>
| </div>
| <div class="entry">
| <div class="label"><h:outputLabel for="completeName">Nombre Completo</h:outputLabel></div>
| <div class="input">
| <h:inputText id="completeName" value="#{personEditor.entity.completeName}" required="true">
| </h:inputText>
| <br/><span class="errors"><h:message for="completeName"/></span>
| </div>
| </div>
| <div class="entry">
| <div class="label"><h:outputLabel for="password">Password:</h:outputLabel></div>
| <div class="input">
| <h:inputSecret id="password" value="#{personEditor.entity.password}" required="true"/><br/>
| <span class="errors"><h:message for="password"/></span>
| </div>
| </div>
| </s:validateAll>
| <div class="entry errors"><h:messages globalOnly="true"/></div>
| <div class="entry">
| <div class="label"><f:verbatim> </f:verbatim></div>
| <div class="input">
| <h:commandButton value="Modificar" action="#{personEditor.perform}" styleClass="button" rendered="#{personEditor.currentOperation=='UPDATE'}"/>
| <h:commandButton value="Crear" action="#{personEditor.perform}" styleClass="button" rendered="#{personEditor.currentOperation=='CREATE'}"/>
|
| <s:link value="Volver" action="#{personEditor.cleanState}" buttonClass="button" linkStyle="button"/>
| </div>
| </div>
| </h:form>
| </f:subview>
|
| </ui:define>
| </ui:composition>
|
As you can see, I've this in my datatable...
| <h:column>
| <f:facet name="header">Action</f:facet>
|
| <h:commandButton action="#{personEditor.displayEntity}" styleClass="button" value="ver"/>
| <h:commandButton action="#{personEditor.updateEntity}" styleClass="button" value="modificar"/>
| <h:commandButton action="#{personEditor.removeEntity}" styleClass="button" value="eliminar"/>
| </h:column>
|
If I use a commandButton, everything works like a charm, but, If I change it with...
| <h:column>
| <f:facet name="header">Action</f:facet>
| [<s:link value="ver" action="#{personEditor.displayEntity}"/>]
| [<s:link value="modificar" action="#{personEditor.updateEntity}"/>]
| [<s:link value="eliminar" action="#{personEditor.removeEntity}"/>]
| </h:column>
|
|
My dataTableSelection in my PersonFinder never loads (It's null always) then, I can't edit, view or update.
I don't know If you need any more information, I think it's a problem in my page! Anyway, I'll show you my actions anyway
| package manchot.actions;
|
| import java.util.List;
|
| import javax.ejb.EJB;
| import javax.ejb.Remove;
| import javax.ejb.Stateful;
|
| import manchot.model.Person;
| import manchot.services.PersonService;
|
| import org.jboss.seam.ScopeType;
| import org.jboss.seam.annotations.Destroy;
| import org.jboss.seam.annotations.Factory;
| import org.jboss.seam.annotations.In;
| import org.jboss.seam.annotations.Name;
| import org.jboss.seam.annotations.Scope;
| import org.jboss.seam.annotations.datamodel.DataModel;
| import org.jboss.seam.annotations.datamodel.DataModelSelection;
|
| @Name("personFinder")
| @Stateful
| @Scope(ScopeType.EVENT)
| @LoggedIn
| public class PersonFinderBean implements PersonFinder {
|
| @EJB
| private PersonService personService;
|
| @DataModel(scope=ScopeType.PAGE)
| private List<Person> model;
|
| @DataModelSelection
| private Person selected;
|
| @In(create=true)
| private PersonController personController;
|
| @Factory("model")
| public void findModel() {
| model = (personService.findByNameLike(personController.getSearchString()));
| }
|
| public void refresh(){
| findModel();
| }
|
| @Destroy
| @Remove
| public void destroy() {
| }
|
| public Person getSelected() {
| return selected;
| }
| }
|
| package manchot.actions;
|
| import javax.ejb.EJB;
| import javax.ejb.Remove;
| import javax.ejb.Stateful;
| import javax.ejb.TransactionAttribute;
| import javax.ejb.TransactionAttributeType;
|
| import manchot.actions.util.Operations;
| import manchot.model.Person;
| import manchot.services.PersonService;
|
| import org.hibernate.validator.Valid;
| import org.jboss.seam.annotations.Begin;
| import org.jboss.seam.annotations.Destroy;
| import org.jboss.seam.annotations.End;
| import org.jboss.seam.annotations.In;
| import org.jboss.seam.annotations.Name;
|
| @Name("personEditor")
| @Stateful
| @LoggedIn
| public class PersonEditorBean implements PersonEditor {
|
| private Operations currentOperation;
|
| @EJB
| private PersonService personService;
|
| @In(create=true)
| private PersonFinder personFinder;
|
| @Valid
| private Person person;
|
|
| public Operations getCurrentOperation() {
| return currentOperation;
| }
|
| public void setCurrentOperation(Operations currentOperation) {
| this.currentOperation = currentOperation;
| }
|
| @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
| public Person getEntity() {
| return person;
| }
|
| public void setEntity(Person entity) {
| this.person = entity;
| }
| @Begin(join=true)
| public String displayEntity() {
| setEntity(personFinder.getSelected());
| currentOperation=Operations.DISPLAY;
| return "personCRUD";
| }
| @Begin(join=true)
| public String updateEntity() {
| setEntity(personFinder.getSelected());
| currentOperation=Operations.UPDATE;
| return "personCRUD";
| }
| @Begin(join=true)
| public String createEntity() {
| setEntity(new Person());
| currentOperation=Operations.CREATE;
| return "personCRUD";
| }
|
| @Begin(join=true)
| public String removeEntity() {
| setEntity(personFinder.getSelected());
| currentOperation=Operations.REMOVE;
| return "personCRUD";
| }
| @End
| public String cleanState() {
| setEntity(null);
| setCurrentOperation(null);
| return "personCRUD";
| }
| @End
| public String perform() {
| if(currentOperation==Operations.REMOVE){
| personService.remove(person);
| }else{
| personService.save(person);
| }
| return cleanState();
| }
|
| @Destroy
| @Remove
| public void destroy() {
| }
| }
|
|
| package manchot.actions;
|
| import javax.ejb.Remove;
|
| @Name("personController")
| @Stateful
| @Scope(ScopeType.SESSION)
| @LoggedIn
| public class PersonControllerBean implements PersonController {
|
| private String searchString="";
|
| public String getSearchString() {
| return searchString;
| }
|
| public void setSearchString(String searchString) {
| this.searchString = searchString;
| }
|
| @Destroy
| @Remove
| public void destroy() {
| }
| }
|
Thanks!!!
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3963070#3963070
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3963070
More information about the jboss-user
mailing list