myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gregg D Bolinger <gthou...@gmail.com>
Subject Re: method binding not working correctly
Date Fri, 12 Aug 2005 14:05:32 GMT
The dataTable's data is fine.  Why would that make a difference though?

On 8/12/05, Mathias Broekelmann <mbroekelmann@psi.de> wrote:
> Is it possible that the returned list for the datatable contains no
> values in the decode phase?
> 
> Regards,
> Mathias
> 
> Gregg D Bolinger schrieb:
> > As I stated in my first post, it doesn't matter if it is in request or
> > session.  I get the same results.  saveState didn't solve the problem
> > and rendered="#{categoryAdmin.updateMode}" does resolve to true after
> > the Edit button is pressed.  That was clear in my code I posted.
> >
> > Any other ideas?
> >
> > Gregg
> >
> > On 8/12/05, Mathias Broekelmann <mbroekelmann@psi.de> wrote:
> >
> >>take a look at rendered="#{categoryAdmin.updateMode}" which must be true
> >>to process the actionlistener when the request is decoded. Save the
> >>state of categoryAdmin with t:savestate or make the bean session scope.
> >>
> >>Hope that helps.
> >>
> >>Regards,
> >>Mathias
> >>
> >>Gregg D Bolinger schrieb:
> >>
> >>>FYI - the missing # from the actionListener in
> >>>
> >>><x:commandButton id="updateButton"
> >>>actionListener="{categoryAdmin.update}" value="Update"
> >>>rendered="#{categoryAdmin.updateMode}"/>
> >>>
> >>>was corrected as I was typing in a hurry. The problem still persists.
> >>>Thanks for any help.  And I am using MyFaces 1.0.9.  Using the latest
> >>>nightly snapshot did not resolve this issue  either.
> >>>
> >>>Gregg
> >>>
> >>>On 8/11/05, Gregg D Bolinger <gthought@gmail.com> wrote:
> >>>
> >>>
> >>>>I'm not sure if this is an issue with MyFaces or with how I am doing
> >>>>what I am doing or what.  I have a very simple page with a a
> >>>>dataTable.  I am wanting to edit the data in the dataTable inline.
> >>>>That is to say, not navigating to a seperate page.  I have it setup
> >>>>with an edit button for each item and when that button is pressed I
> >>>>render inputText components and an update button for the associated
> >>>>row.  This works.
> >>>>
> >>>>The problem is that the update button's actionListener method binding
> >>>>isn't working.  When I press the update button, nothing happens.  The
> >>>>update(ActionEvent event) method is never called.  It doesn't matter
> >>>>if the bean is in the session or request. It just doesn't call the
> >>>>method.  I have stripped the code down to the simplest working example
> >>>>that demonstrates this problem which I will post below.  As it is
> >>>>right now, I am merely showing and hiding the update/edit buttons.
> >>>>When I press Edit the edit method is being called and the update
> >>>>button is rendered where the edit button is now not rendered.  If I
> >>>>hit update button, the update method is never called and the edit
> >>>>button is displayed again, hiding the update button.  I realize that
> >>>>with each button press a new request is being sent to the server.
> >>>>However, it JSF is supposed to save the state of the bean for
> >>>>actionListeners since it does not navigate from the page. However, I
> >>>>don't believe this is working correctly.  Any ideas?  Thanks.
> >>>>
> >>>><f:view>
> >>>><html>
> >>>> <head><title>Simple jsp page</title></head>
> >>>> <body>
> >>>> <jsp:include page="includes/admin_header.jsp"/>
> >>>> <h:form>
> >>>>   <x:dataTable var="cat" binding="#{categoryAdmin.categoryData}"
> >>>>value="#{categoryAdmin.categoryList}" border="1"
> >>>>forceIdIndex="#{cat.categoryId}" >
> >>>>       <h:column>
> >>>>           <f:facet name="header">
> >>>>               <h:outputText value="Description" />
> >>>>           </f:facet>
> >>>>           <h:outputText value="#{cat.description}"/>
> >>>>       </h:column>
> >>>>       <h:column>
> >>>>           <f:facet name="header">
> >>>>               <h:outputText value="Cost"/>
> >>>>           </f:facet>
> >>>>           <h:outputText value="#{cat.cost}"/>
> >>>>
> >>>>       </h:column>
> >>>>       <h:column>
> >>>>           <x:commandButton id="editButton"
> >>>>actionListener="#{categoryAdmin.edit}" value="Edit" rendered="#{not
> >>>>categoryAdmin.updateMode}" />
> >>>>           <x:commandButton id="updateButton"
> >>>>actionListener="{categoryAdmin.update}" value="Update"
> >>>>rendered="#{categoryAdmin.updateMode}"/>
> >>>>       </h:column>
> >>>>       <h:column>
> >>>>           <x:commandButton actionListener="#{categoryAdmin.delete}"
> >>>>value="Delete"/>
> >>>>       </h:column>
> >>>>   </x:dataTable>
> >>>>   <f:verbatim><br/></f:verbatim>
> >>>>
> >>>>   <h:panelGrid columns="2" border="1">
> >>>>       <h:outputText value="Description"/>
> >>>>       <h:inputText value="#{categoryAdmin.category.description}"
/>
> >>>>       <h:outputText value="Cost"/>
> >>>>       <h:inputText value="#{categoryAdmin.category.cost}"/>
> >>>>       <h:commandButton actionListener="#{categoryAdmin.add}" value="Save"/>
> >>>>       <h:commandButton actionListener="#{categoryAdmin.cancel}"
> >>>>value="Cance"/>
> >>>>   </h:panelGrid>
> >>>>
> >>>>
> >>>> </h:form>
> >>>> </body>
> >>>></html>
> >>>></f:view>
> >>>>
> >>>>public class CategoryAdmin extends BaseBean implements Serializable {
> >>>>
> >>>>   private List categoryList;
> >>>>   private UIData categoryData;
> >>>>   private boolean updateMode = false;
> >>>>
> >>>>   private Category category;
> >>>>
> >>>>   public List getCategoryList() {
> >>>>       CategoryService catService =
> >>>>(CategoryService)getAppContext().getBean("categoryService");
> >>>>       categoryList = catService.getall();
> >>>>       return categoryList;
> >>>>   }
> >>>>
> >>>>   public void setCategoryList(List categoryList) {
> >>>>
> >>>>       this.categoryList = categoryList;
> >>>>   }
> >>>>
> >>>>   public UIData getCategoryData() {
> >>>>
> >>>>
> >>>>       return categoryData;
> >>>>   }
> >>>>
> >>>>
> >>>>
> >>>>   public void setCategoryData(UIData categoryData) {
> >>>>       this.categoryData = categoryData;
> >>>>   }
> >>>>
> >>>>   public boolean isUpdateMode() {
> >>>>       return updateMode;
> >>>>   }
> >>>>
> >>>>   public void setUpdateMode(boolean updateMode) {
> >>>>       this.updateMode = updateMode;
> >>>>   }
> >>>>
> >>>>   public Category getCategory() {
> >>>>       if (category == null){
> >>>>           category = new Category();
> >>>>       }
> >>>>       return category;
> >>>>   }
> >>>>
> >>>>   public void setCategory(Category category) {
> >>>>       this.category = category;
> >>>>   }
> >>>>
> >>>>   public void edit(ActionEvent event){
> >>>>       System.out.println("Edit");
> >>>>       category = (Category)categoryData.getRowData();
> >>>>       category.setEditable(true);
> >>>>       setUpdateMode(true);
> >>>>   }
> >>>>
> >>>>   public void update(ActionEvent event){
> >>>>       System.out.println("Updating");
> >>>>   }
> >>>>
> >>>>
> >>>>
> >>>>   public void delete(ActionEvent event){
> >>>>
> >>>>
> >>>>       CategoryService catService =
> >>>>(CategoryService)getAppContext().getBean("categoryService");
> >>>>       Category cat = (Category)categoryData.getRowData();
> >>>>       catService.delete(cat);
> >>>>       setCategoryList(catService.getall());
> >>>>
> >>>>
> >>>>   }
> >>>>
> >>>>   public void add(ActionEvent event){
> >>>>       System.out.println("Adding");
> >>>>
> >>>>       CategoryService catService =
> >>>>(CategoryService)getAppContext().getBean("categoryService");
> >>>>       catService.insert(getCategory());
> >>>>
> >>>>   }
> >>>>
> >>>>   public void cancel(ActionEvent event){
> >>>>
> >>>>   }
> >>>>
> >>>>   public void changeAddMode(ActionEvent event){
> >>>>       System.out.println("Changing Add Mode");
> >>>>
> >>>>   }
> >>>>}
> >>>>
> >>
>

Mime
View raw message