1 2 Previous Next 20 Replies Latest reply on Apr 30, 2009 5:45 AM by Esteban Ramirez

    getPreferences with JSF portlet

    françois LEFEVRE Newbie

      Hi,

      I'm trying to set a view and edit modes through two instances.

      One instance has a parameter edit="true" et the other has the parameter edit="false"

      I'd like to use those parameters to display different things using JSF

      but i'm unable to get Preferences, here is my code to get these preferences :

      protected void doView(RenderRequest request, RenderResponse response) throws PortletException, PortletSecurityException, IOException
       {
       response.setContentType("text/html");
       PortletPreferences prefs = request.getPreferences();
       String parameter = prefs.getValue("edit",init);
       if (parameter.equals("true"))
       {
      
       }
       else
       {
      
       }
       }


        • 1. Re: getPreferences with JSF portlet
          françois LEFEVRE Newbie

          I forgot to say

          thanks ^^
          regards

          • 2. Re: getPreferences with JSF portlet
            françois LEFEVRE Newbie

            The problem is that the program won't pass through 'doView'




            MDP_contribution_consultation.java

            import javax.portlet.PortletPreferences;
            import javax.portlet.PortletSecurityException;
            import javax.portlet.RenderRequest;
            import javax.portlet.RenderResponse;
            import javax.portlet.PortletException;
            import java.io.IOException;
            
            public class MDP_contribution_consultation
            {
             String consulter="ok";
             String supprimer;
             private String init="false";
            
             protected void doView(RenderRequest request, RenderResponse response) throws PortletException, PortletSecurityException, IOException
             {
             response.setContentType("text/html");
             // StringBuffer html = new StringBuffer();
             // PrintWriter writer = response.getWriter();
             PortletPreferences prefs = request.getPreferences();
             String parameter = prefs.getValue("suppression_pref",init);
             if (parameter.equals("true"))
             {
             this.supprimer="ok";
             // html.append("<-- Contribution --><br/>");
             // html.append("<img src='/WEB-INF/images/logo.gif'/>");
             }
             else
             {
             this.supprimer="pas ok";
             // html.append("<-- Consultation --><br/>");
             }
             // response.getWriter().write(html.toString());
             // writer.close();
             }
            
             public String getConsulter()
             {
             return consulter;
             }
            
             public void setConsulter(String consulter)
             {
             this.consulter = consulter;
             }
            
             public String getSupprimer()
             {
             return supprimer;
             }
            
             public void setSupprimer(String supprimer)
             {
             this.supprimer = supprimer;
             }
            }


            view.jsp

            <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
            <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
            
            <f:view>
             <div align="center">
             <h:panelGrid columns="3">
             <h:outputText value="NOM FICHE"/>
             <h:outputText value="CONSULTER"/>
             <h:outputText value="SUPPRIMER"/>
             <h:outputText value="fiche 1"/>
             <h:outputText value="#{MDP_contribution_consultation.consulter}"/>
             <h:outputText value="#{MDP_contribution_consultation.supprimer}"/>
             <h:outputText value="fiche 2"/>
             <h:outputText value="#{MDP_contribution_consultation.consulter}"/>
             <h:outputText value="#{MDP_contribution_consultation.supprimer}"/>
             <h:outputText value="fiche 3"/>
             <h:outputText value="#{MDP_contribution_consultation.consulter}"/>
             <h:outputText value="#{MDP_contribution_consultation.supprimer}"/>
             </h:panelGrid>
             <br/>
             </div>
            </f:view>


            sorry for the multiple posts
            regards

            • 3. Re: getPreferences with JSF portlet
              Thomas Heute Master

              It doesn't look like a portlet to me, you are not extending GenericPortlet or anything else.

              • 4. Re: getPreferences with JSF portlet
                françois LEFEVRE Newbie

                 

                "thomas.heute@jboss.com" wrote:
                It doesn't look like a portlet to me, you are not extending GenericPortlet or anything else.



                sorry I'm a noob,
                what have I to do except adding "extends GenericPortlet" ?

                Because now, I've having this error
                Object not found mdpApp.MDP_contribution_consultation


                thanks

                • 5. Re: getPreferences with JSF portlet
                  Thomas Heute Master

                  It looks like you didn't specify your XML descriptors correctly.

                  You should start from the HelloWorld portlet and extend it step by step:
                  http://labs.jboss.com/portal/portletswap/portlets_tutorial.html

                  • 6. Re: getPreferences with JSF portlet
                    françois LEFEVRE Newbie

                     

                    "thomas.heute@jboss.com" wrote:
                    It looks like you didn't specify your XML descriptors correctly.

                    You should start from the HelloWorld portlet and extend it step by step:
                    http://labs.jboss.com/portal/portletswap/portlets_tutorial.html


                    hu sorry,
                    I had to refresh anoter time
                    it's working without error

                    but the program won't pass through doView
                    i'd like to set supprimer="ok" if my parameter suppression_pref="true"
                    or supprimer="pas ok" if suppression_pref="false"

                    and then I display supprimer in my JSP
                    <h:outputText value="#{MDP_contribution_consultation.supprimer}"/>


                    thanks for your quick replies

                    • 7. Re: getPreferences with JSF portlet
                      Thomas Heute Master

                      Oups sorry i replied too quickly i missed that you were working on a JSF portlet.

                      On a JSF portlet you don't need to extend GenericPortlet and render() won't be called.

                      You need to pass a JSF page as parameter in portlet.xml in getSupprimer() you should access the preferences like this:

                      public String getSupprimer() {
                       PortletPreferences prefs = request.getPreferences();
                       String parameter = prefs.getValue("suppression_pref",init);
                       if (parameter.equals("true))
                       {
                       return "ok";
                       }
                       else
                       {
                       return "pas ok";
                       }
                      }
                      


                      • 8. Re: getPreferences with JSF portlet
                        françois LEFEVRE Newbie

                        ok thanks for your help Thomas :)

                        I removed "extends GenericPortlet" and the doView method
                        and I updated getSupprimer() like this

                        import javax.portlet.PortletPreferences;
                        import javax.portlet.PortletSecurityException;
                        import javax.portlet.RenderRequest;
                        import javax.portlet.RenderResponse;
                        import javax.portlet.PortletException;
                        import java.io.IOException;
                        
                        public class MDP_contribution_consultation
                        {
                         String consulter="ok";
                         String supprimer;
                         private String init="false";
                        
                         public String getConsulter()
                         {
                         return consulter;
                         }
                        
                         public void setConsulter(String consulter)
                         {
                         this.consulter = consulter;
                         }
                        
                         public String getSupprimer(RenderRequest request, RenderResponse response) throws PortletException, PortletSecurityException, IOException
                         {
                         PortletPreferences prefs = request.getPreferences();
                         String parameter = prefs.getValue("edit",init);
                         if (parameter.equals("true"))
                         {
                         return "ok";
                         }
                         else
                         {
                         return "pas ok";
                         }
                         }
                        
                         public void setSupprimer(String supprimer)
                         {
                         this.supprimer = supprimer;
                         }
                        }
                        


                        now I'm having this error

                        An error occured while rendering window 'default.MaPage.contrib'
                        
                        org.apache.jasper.JasperException: Bean: MDP_contribution_consultation, property: supprimer


                        my portlet.xml has a jsp page as an init parameter, like this

                        <portlet-app version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                         xsi:schemaLocation="http://java.sun.com/xml/ns/portlet"
                         xmlns="http://java.sun.com/xml/ns/portlet">
                         <portlet>
                         <portlet-name>MDP_contribution_consultation</portlet-name>
                         <portlet-class>org.apache.myfaces.portlet.MyFacesGenericPortlet</portlet-class>
                         <portlet-info>
                         <title>MDP_contribution_consultation</title>
                         </portlet-info>
                         <init-param>
                         <name>default-view</name>
                         <value>/WEB-INF/jsp/view.jsp</value>
                         </init-param>
                         <init-param>
                         <name>suppression_init</name>
                         <value>false</value>
                         </init-param>
                         <portlet-preferences>
                         <preference>
                         <name>edit</name>
                         <value>true</value>
                         </preference>
                         </portlet-preferences>
                         <supports>
                         <mime-type>text/html</mime-type>
                         <portlet-mode>VIEW</portlet-mode>
                         </supports>
                         </portlet>
                        </portlet-app>
                        


                        regards

                        • 9. Re: getPreferences with JSF portlet
                          Thomas Heute Master

                          getSupprimer should have no parameter.
                          You can get the request from FacesContext.getExternalContext.getRequest();

                          • 10. Re: getPreferences with JSF portlet
                            françois LEFEVRE Newbie

                            did you mean
                            PortletPreferences prefs = FacesContextWrapper.getExternalContext.getRequest().getPreferences();

                            or

                            PortletPreferences prefs = FacesContextFactoryImpl.getExternalContext.getRequest().getPreferences();


                            FacesContext cannot be resolved

                            FacesContextWrapper or FacesContextFactoryImpl can't be resolved ("It is indirectly referenced from required .class files")

                            • 11. Re: getPreferences with JSF portlet
                              Thomas Heute Master

                              I need to wake up...
                              I meant:
                              FacesContext.getCurrentInstance().getExternalContext().getRequest()

                              Then you can cast it to a PortletRequest.

                              FacesContext is part of the JSF public API.
                              http://java.sun.com/javaee/javaserverfaces/1.0/docs/api/javax/faces/context/FacesContext.html

                              • 12. Re: getPreferences with JSF portlet
                                françois LEFEVRE Newbie

                                sorry I don't get it :-s

                                FacesContext doesn't work alone
                                eclipse suggests me FacesContextWrapper or FacesContextFactoryImpl but not FacesContext alone

                                • 13. Re: getPreferences with JSF portlet
                                  Thomas Heute Master

                                  Add the JSF API to Eclipse classpath then...

                                  • 14. Re: getPreferences with JSF portlet
                                    françois LEFEVRE Newbie

                                    ok :)
                                    first of all I'd like to say thank you for bearing with the n00b I am

                                    ok now eclipse is ok with FacesContext

                                    but now i'm facing to the 'cast' problem
                                    by "casting to a PortletRequest", did you mean :
                                    PortletRequest prefs = FacesContext.getCurrentInstance().getExternalContext().getRequest();
                                    ?

                                    thanks

                                    1 2 Previous Next