10 Replies Latest reply on May 22, 2006 1:52 PM by Gavin King

    RequestParameter problem

    Mirko Adari Novice

      Okay, it all works fine if I have required get parameter set.
      But what if I don`t? If user enters that page directly without any parameters.
      Then I get error: ould not set field value: cateditor.catid
      And I do not want user to visit page while not in long-running conversation.
      Unfortune @Conversational does not get started, because this error happens.
      Any design patterns to overcome this issue?

      Please help me, it`s needed hurry...

        • 1. Re: RequestParameter problem
          Mirko Adari Novice

          I even can`t use a bean with requestparameter if url does not include requestparmeter. Am I doing smth wrong?

          • 2. Re: RequestParameter problem
            Mirko Adari Novice

            any explanations?

            • 3. Re: RequestParameter problem
              Gavin King Master

              Sorry, no-one can help because it's _your_ explanation which is insufficient.

              • 4. Re: RequestParameter problem
                Mirko Adari Novice

                Sorry. I`ll try better.
                I have this page:

                <?xml version="1.0" encoding="iso-8859-15"?>
                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                <html 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:t="http://myfaces.apache.org/tomahawk"
                 xmlns:s="http://jboss.com/products/seam/taglib">
                <body>
                 <ui:composition template="templates/layout.xhtml">
                 <ui:define name="tabs">
                 <div class="tab enabled">
                 <div class="tab_l"></div>
                 <a href="categorys.jsf">#{msgs.allCategories}</a>
                 <div class="tab_r"></div>
                 </div>
                 <div class="tabs_separator"></div>
                 <div class="tab disabled">
                 <div class="tab_l"></div>
                 Grupi muutmine
                 <div class="tab_r"></div>
                 </div>
                 <div class="tabs_separator"></div>
                 <div class="tab choosed">
                 <div class="tab_l"></div>
                 Grupi loomine
                 <div class="tab_r"></div>
                 </div>
                 <div class="tabs_separator"></div>
                 </ui:define>
                
                 <ui:define name="body">
                 <h1><span class="heading"></span>ANDMED</h1>
                 <div id="andmed">
                 <h:form>
                 <s:validateAll>
                 <span class="errors"><h:message for="name"/></span>
                 <h:outputLabel for="name" value="Grupi nimi"/>
                 <h:inputText id="name" value="#{category.name}" styleClass="field"/>
                 <div class="separator"></div>
                
                 <span class="errors"><h:message for="head"/></span>
                 <h:outputLabel for="head" value="Tüvikategooria"/>
                 <h:outputText id="head" value="#{category.head.name}" styleClass="field"/>
                 <div class="separator"></div>
                
                 <span class="errors"><h:message for="showed"/></span>
                 <h:outputLabel for="showed" value="Avalik"/>
                 <h:selectOneRadio id="showed" value="#{category.showed}" styleClass="field">
                 <f:selectItem itemValue="true" itemLabel="Jah"/>
                 <f:selectItem itemValue="false" itemLabel="Ei"/>
                 </h:selectOneRadio>
                 <div class="separator"></div>
                
                 <s:link view="/haldus/mcategory.xhtml" id="submit" value="Loo grupp" action="#{cateditor.create}"
                 buttonClass="button" linkStyle="button"/>
                 </s:validateAll>
                
                 <s:link propagation="end" id="submit" value="Loobu"
                 view="/haldus/categorys.xhtml" linkStyle="button" buttonClass="button"/>
                 <div class="separator"></div>
                 </h:form>
                 </div>
                 </ui:define>
                 </ui:composition>
                
                </body>
                </html>
                


                and this bean:

                package ee.digizone.ejb;
                
                import java.io.Serializable;
                import java.util.List;
                import java.util.Map;
                import java.util.TreeMap;
                
                import javax.ejb.Remove;
                import javax.ejb.Stateful;
                import javax.persistence.EntityManager;
                
                import org.jboss.seam.ScopeType;
                import org.jboss.seam.annotations.Begin;
                import org.jboss.seam.annotations.Conversational;
                import org.jboss.seam.annotations.Create;
                import org.jboss.seam.annotations.Destroy;
                import org.jboss.seam.annotations.End;
                import org.jboss.seam.annotations.In;
                import org.jboss.seam.annotations.Name;
                import org.jboss.seam.annotations.Out;
                import org.jboss.seam.annotations.RequestParameter;
                import org.jboss.seam.annotations.Scope;
                
                
                import ee.digizone.entity.Category;
                import org.jboss.logging.Logger;
                
                @Stateful
                @Name("cateditor")
                @Conversational(ifNotBegunOutcome="categorys")
                public class CategoryEditorBean implements CategoryEditor,Serializable {
                
                 @In(create=true,value="digizoneDatabase")
                 EntityManager em;
                
                 @Out(required=false)
                 @In(required=false)
                 private Category category;
                
                 Logger logger = Logger.getLogger(CategoryEditorBean.class);
                
                 @RequestParameter
                 int catid;
                
                 Map<String,Category> categoryMap;
                 List<Category> categories;
                
                 @Create
                 public void loadData() {
                 categories = em.createQuery("from Category c")
                 .setHint("org.hibernate.cacheable", true)
                 .getResultList();
                 Map<String,Category> results = new TreeMap<String,Category>();
                
                 for (Category category: categories) {
                 results.put(category.getName(),category);
                 }
                
                 categoryMap = results;
                 }
                
                 public void create() {
                 em.persist(category);
                 }
                 public void save() {
                 em.refresh(category);
                 }
                 @Begin(join=true)
                 public void selectCreate() {
                 category = new Category();
                 category.setHead(em.find(Category.class,catid));
                 }
                 @Begin(join=true)
                 public void selectModify() {
                 category = em.find(Category.class,catid);
                 }
                
                 @End
                 public String delete() {
                 category = em.find(Category.class,catid);
                 em.remove(category);
                 return null;
                 }
                
                 public Map<String,Category> getCategories() {
                 return categoryMap;
                 }
                 public Category getCategory() {
                 return this.category;
                 }
                
                 @Destroy @Remove
                 public void destroy() {}
                }
                


                What I wan`t is that when user hits page ccategory.jsf when no conversation is active ,he would be directed to categorys page. Currently it just gaves me error: could not set cateditor.catid.

                Hope this one is better, I know five languages, but english is not in them... so be merciful to me.

                • 5. Re: RequestParameter problem
                  Mirko Adari Novice

                  It gives me trouble every time when i call bean which has requestparameter, but request does not have that parameter.
                  Giving errors and not letting me work normally. There most definitely is something that im designing wrong...

                  • 6. Re: RequestParameter problem
                    Norman Richards Master

                    A missing request parameter is a null value. If you want to allow null values, you need to use a non-primitive type like Integer instead of int.

                    • 7. Re: RequestParameter problem
                      Mirko Adari Novice

                      Oh my god, thank you. But how come does not entry.jsf on blog example does not break application if I make a request with not specifying blogEntryID parameter?

                      • 8. Re: RequestParameter problem
                        Norman Richards Master

                        It is a String, so the value can be null.

                        • 9. Re: RequestParameter problem
                          Mirko Adari Novice

                          yeah, noticed it. Anyway thank you much. You should note it in manual I think... My logic atleast tells that null = value of 0 or smth.

                          • 10. Re: RequestParameter problem
                            Gavin King Master

                             

                            My logic atleast tells that null = value of 0


                            Um.

                            I have never met any programming language where null==0. Certainly not Java.