tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1209
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    h4nnes h4nnes ist offline Mitglied
    Registriert seit
    Dec 2004
    Beiträge
    14
    Hallo zusammen,

    ich versuche zur Zeit ein Spring Portlet für Liferay zu schreiben, doch irgendwie scheint mein Controller für ein Suchfeld nicht zu funktionieren.
    Ich hoffe, dass mir jemand helfen kann

    meine JSP: (die libs sind included)
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    <portlet:actionURL var="formAction">
        <portlet:param name="action" value="search"/>
    </portlet:actionURL>
     
     
    <form:form commandName="newsletterCommand" method="post" action="${formAction}">
         <table border="0">
             <tr>
                 <td>Search:</td>
                <td><form:input path="searchField"/><form:errors path="searchField"/></td>
                <td><input type="submit" value="submit"/></td>
             </tr>
         </table>
    </form:form>


    Die xml:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
        <bean id="parameterMappingInterceptor" class="org.springframework.web.portlet.handler.ParameterMappingInterceptor"/>
        
        <bean id="portletModeParameterHandlerMapping" class="org.springframework.web.portlet.handler.PortletModeParameterHandlerMapping">
            <property name="order" value="10"/>
                <property name="interceptors">
                    <list>
                        <ref bean="parameterMappingInterceptor"/>
                    </list>
                </property>
            <property name="portletModeParameterMap">
                <map>
                    <entry key="view"> 
                        <map>
                            <entry key="search"><ref bean="newsletterSearchController"/></entry>
                            <entry key="test"><ref bean="JSPController"/></entry>
                        </map>
                    </entry>
                </map>
            </property>
        </bean>
     
     
        <bean id="newsletterSearchController" class="com.ext.portlet.newsletter.controllers.NewsletterSearchController">
            <property name="sessionForm" value="true"/>
            <property name="commandName" value="newsletterCommand"/>
            <property name="commandClass" value="com.ext.portlet.newsletter.cmd.NewsletterCommand"/>
            <property name="newsletterService" ref="newsletterService"/>
            <property name="formView" value="search"/>
        </bean>


    CommandController:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    package com.ext.portlet.newsletter.cmd;
     
    import java.io.Serializable;
     
    @SuppressWarnings("serial")
    public class NewsletterCommand implements Serializable{
        
        private String searchField;
     
        
        public String getSearchField() {
            return searchField;
        }
     
     
        public void setSearchField(String searchField) {
            this.searchField = searchField;
        }
     
     
    }

    controller:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    
    package com.ext.portlet.newsletter.controllers;
     
    import javax.portlet.ActionRequest;
    import javax.portlet.ActionResponse;
    import javax.portlet.PortletRequest;
    import javax.portlet.RenderRequest;
    import javax.portlet.RenderResponse;
     
    import org.apache.commons.lang.StringUtils;
    import org.springframework.validation.BindException;
    import org.springframework.web.portlet.ModelAndView;
    import org.springframework.web.portlet.mvc.SimpleFormController;
     
    import com.ext.portlet.newsletter.cmd.NewsletterCommand;
    import com.ext.portlet.newsletter.model.NewsletterModel;
    import com.ext.portlet.newsletter.service.NewsletterService;
     
     
    public class NewsletterSearchController extends SimpleFormController{    
        
        
        private NewsletterService newsletterService;
     
        
     
        
     
        protected void onSubmitAction(ActionRequest request, ActionResponse response,Object command,BindException errors) 
            throws Exception {
     
            response.setRenderParameter("action","search");
        }
     
        @Override
        protected Object formBackingObject(PortletRequest request) throws Exception {
     
            NewsletterCommand cmd = new NewsletterCommand();
            return cmd;
        }
        
        protected ModelAndView onSubmitRender(RenderRequest request, RenderResponse response, Object command, BindException errors)    throws Exception {
            System.out.println("Start: NewsletterSearchController-onSubmitRender");
            
            NewsletterModel model = null;
            NewsletterCommand cmd = (NewsletterCommand) command;
            
            if(StringUtils.isNotEmpty(cmd.getSearchField())){
                    model = newsletterService.getNewsletterModelBySearchString(cmd.getSearchField());
                    System.out.println("Search: " + cmd.getSearchField());
            }
            
            System.out.println("Ende: NewsletterSearchController-onSubmitRender");
            return new ModelAndView("search", "newsletterModel", model);
        }
        
        
        public void setNewsletterService(NewsletterService newsletterService) {
            this.newsletterService = newsletterService;
        }
        
     
        public NewsletterService getNewsletterService() {
            return newsletterService;
        }
    }

    Und hier der Fehler:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    10:50:42,681 ERROR [InputTag:84] Neither BindingResult nor plain target object f
    or bean name 'newsletterCommand' available as request attribute
    java.lang.IllegalStateException: Neither BindingResult nor plain target object f
    or bean name 'newsletterCommand' available as request attribute
            at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.
    java:141)
     
    ...
    Vielen Dank schon mal!

    Gruß Johannes
     

  2. #2
    h4nnes h4nnes ist offline Mitglied
    Registriert seit
    Dec 2004
    Beiträge
    14
    Okay, ich habe das Problem gefunden,... Ich denke es liegt daran, dass ich die selbe JSP wieder aufrufe und dafür das object nicht an den ModelAndView übergebe oder gibt es eine bessere Lösung?
     

  3. #3
    pizza1234 pizza1234 ist offline Mitglied Gold
    Registriert seit
    Jan 2007
    Beiträge
    177
    Hi,

    versuch doch das mal:

    Code java:
    1
    2
    3
    4
    
    ...
    new ModelAndView(new RedirectView("search.html"), "newsletterModel", model);
     
    ...

    Grüße
    Peter
     

Ähnliche Themen

  1. Spring Security NTLM & Spring Framework 3.0
    Von Thomas Darimont im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 26.01.10, 12:50
  2. Planung Serversoftware mit Spring als Framework, wie Spring einsetzen?
    Von DarthShader im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 8
    Letzter Beitrag: 26.09.08, 19:05
  3. Spring MVC::SimpleFormController::initialization
    Von Don_Pazo im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 3
    Letzter Beitrag: 30.01.08, 10:22
  4. SimpleFormController, Command Object übergeben
    Von BigChicken im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 17.09.07, 09:59
  5. Spring One Praesentation: Introduction to Data Access with Spring.NET
    Von Thomas Darimont im Forum .NET Datenverwaltung
    Antworten: 2
    Letzter Beitrag: 21.06.06, 13:42