[Java lista] Spring Struts Action getResources NullPointerException

chico at tisztanet.hu chico at tisztanet.hu
2007. Feb. 18., V, 20:21:30 CET


Szia!

/**
 * Struts actions ősosztály.
 *
 * @author chico
 */
public abstract class BaseAction extends Action {
    protected WebApplicationContext wac;

    public void setServlet(ActionServlet actionServlet) {
        super.setServlet(actionServlet);

        if (actionServlet != null) {
            ServletContext servletContext =
                actionServlet.getServletContext();
            this.wac =
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);

            ...
        }
    }

...

}

Remélem segít.
Üdv,
Chico

> köszi, nem itt van a hiba, mert a Form-ból nekem is megy az elérés. A
> baj, hogy az Action-ben nem. Mivel az Action-t a Spring példányosítja,
> ezért gondolom, hogy valamit nem úgy tesz, ahogy kéne. Ráadásul nekem
> csak egy servlet-em van, a context init listenerben van. Esetleg, ha
> áldoznál rá még 1-2 percet, és megnéznéd, hogy Action-ből megy-e a
> getServlet().
>
>>
>> > a környezet Struts + Spring. LookupDispatchActionSupport osztályt
>> > szeretnék használni, de az használja az Action
>> > getResources(HttpServletRequest request, String key) metódusát, ami
>> > NullPointerException-nel elszáll. Ugyanis a getServlet() null. Ha
>> > kipróbálom, akkor az én osztályomban hívva a getServlet() szintén
>> > null. Van valami sejtésem, hogy a Spring kavar be. Valami ötlet?
>>
>> Konkrétan a kérdéses osztályt még nem használtam, de Spring alatt a
>> Struc-ot így használom (Spring 1.2.6, és a hozzá csomagolt struct.jar):
>>
>> web.xml-ben:
>>
>> ...
>> <servlet>
>> <servlet-name>context</servlet-name>
>> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
>> <load-on-startup>1</load-on-startup>
>> </servlet>
>>
>> <servlet>
>> <servlet-name>irm-vps</servlet-name>
>> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
>> <load-on-startup>2</load-on-startup>
>> </servlet>
>>
>> <servlet>
>> <servlet-name>action</servlet-name>
>> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
>> <load-on-startup>3</load-on-startup>
>> </servlet>
>>
>> <servlet-mapping>
>> <servlet-name>action</servlet-name>
>> <url-pattern>*.do</url-pattern>
>> </servlet-mapping>
>>
>> ...
>>
>> A "load-on-startup" értékek fontosak! Programon belül így értem a Spring
>> bean konténert:
>>
>>
>> public class BaseActionForm extends ActionForm {
>> ...
>> public ActionErrors validate(ActionMapping mapping, HttpServletRequest
>> request) {
>>    ServletContext servletContext = getServlet().getServletContext();
>>    WebApplicationContext wac =
>> WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
>> ...
>> }
>> }
>>
>> A "wac" -ból minden bean az id alapján elérhető. Nekem működik Tomcat
>> 5.5
>> és Sun ONE 7 alatt is.
>>




További információk a(z) Javalist levelezőlistáról