Of course, I should have noted Appfuse2 - Struts2
Daniel Kibler wrote:
>
> I have another baffling problem.
>
> I'm trying to add file upload capability to a data form
page. I added a
> new form to the page based on the appfuse file upload
jsp. I also edited
> the action to extend
org.appfuse.webapp.action.FileUploadAction,
> overriding the upload() method and included the Override
annotation.
>
> Page loads fine, browse button works, but when click
the Upload button I
> get the NoSuchMethodException below telling it can't
find the upload().
> Everything seem is order. What's going on?
>
> The signatures:
>
> public class PhotoAction extends FileUploadAction
implements Preparable {
> ...
> Override
> public String upload() throws Exception {
>
>
> The jsp form:
>
> <s:form action="uploadPhoto"
enctype="multipart/form-data"
method="post"
> validate="true"
id="uploadForm">
> <li class="info">
> <fmt:message
key="upload.message"/>
> </li>
> <s:file name="file"
label="%{getText('photo.file')}"
cssClass="text
> file" required="true"/>
> <li class="buttonBar bottom">
> <s:submit key="button.upload"
name="upload" cssClass="button"/>
> <input type="button"
value="<fmt:message
key="button.cancel"/>"
> class="button"
> onclick="this.form.onsubmit = null;
> location.href='photoEdit.html'"/>
> </li>
> </s:form>
>
> struts.xml
>
> <action name="uploadPhoto"
>
class="com.getrolling.cis.webapp.action.PhotoAction&quo
t; method="upload" >
> <interceptor-ref
name="fileUploadStack"/>
> <result
name="input">/WEB-INF/pages/photoForm.jsp</r
esult>
> <result
name="success">/WEB-INF/pages/photoForm.jsp<
/result>
> <result name="cancel"
type="redirect">photos.html</result>
> </action>
>
> and finally the exception:
>
> javax.servlet.ServletException:
java.lang.NoSuchMethodException:
> com.getrolling.cis.webapp.action.PhotoAction.upload()
> at
>
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispa
tcher.java:515)
> at
>
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(Filt
erDispatcher.java:419)
> at
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilte
r(ServletHandler.java:1084)
> at
>
org.appfuse.webapp.filter.StaticFilter.doFilterInternal(Stat
icFilter.java:106)
> at
>
org.springframework.web.filter.OncePerRequestFilter.doFilter
(OncePerRequestFilter.java:75)
> at
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilte
r(ServletHandler.java:1084)
> at
>
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage
(PageFilter.java:118)
> at
>
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(
PageFilter.java:52)
> at
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilte
r(ServletHandler.java:1084)
> at
>
org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(
ActionContextCleanUp.java:99)
> at
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilte
r(ServletHandler.java:1084)
> at
>
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(Ru
leChain.java:164)
> at
>
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChai
n.java:141)
> at
>
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest
(UrlRewriter.java:90)
> at
>
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(
UrlRewriteFilter.java:406)
> at
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilte
r(ServletHandler.java:1084)
> at
>
org.displaytag.filter.ResponseOverrideFilter.doFilter(Respon
seOverrideFilter.java:125)
> at
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilte
r(ServletHandler.java:1084)
> at
>
net.sf.ehcache.constructs.web.filter.GzipFilter.doFilter(Gzi
pFilter.java:75)
> at
net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.
java:92)
> at
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilte
r(ServletHandler.java:1084)
> at
>
org.appfuse.webapp.filter.LocaleFilter.doFilterInternal(Loca
leFilter.java:74)
> at
>
org.springframework.web.filter.OncePerRequestFilter.doFilter
(OncePerRequestFilter.java:75)
> at
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilte
r(ServletHandler.java:1084)
> at
>
com.opensymphony.clickstream.ClickstreamFilter.doFilter(Clic
kstreamFilter.java:42)
> at
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilte
r(ServletHandler.java:1084)
> at
>
org.springframework.orm.hibernate3.support.OpenSessionInView
Filter.doFilterInternal(OpenSessionInViewFilter.java:198)
> at
>
org.springframework.web.filter.OncePerRequestFilter.doFilter
(OncePerRequestFilter.java:75)
> at
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilte
r(ServletHandler.java:1084)
> at
>
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.d
oFilter(FilterChainProxy.java:265)
> at
>
org.acegisecurity.intercept.web.FilterSecurityInterceptor.in
voke(FilterSecurityInterceptor.java:107)
> at
>
org.acegisecurity.intercept.web.FilterSecurityInterceptor.do
Filter(FilterSecurityInterceptor.java:72)
> at
>
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.d
oFilter(FilterChainProxy.java:275)
> at
>
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(Exc
eptionTranslationFilter.java:166)
> at
>
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.d
oFilter(FilterChainProxy.java:275)
> at
>
org.acegisecurity.providers.anonymous.AnonymousProcessingFil
ter.doFilter(AnonymousProcessingFilter.java:125)
> at
>
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.d
oFilter(FilterChainProxy.java:275)
> at
>
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.d
oFilter(RememberMeProcessingFilter.java:142)
> at
>
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.d
oFilter(FilterChainProxy.java:275)
> at
>
org.acegisecurity.wrapper.SecurityContextHolderAwareRequestF
ilter.doFilter(SecurityContextHolderAwareRequestFilter.java:
81)
> at
>
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.d
oFilter(FilterChainProxy.java:275)
> at
>
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(Abstr
actProcessingFilter.java:271)
> at
>
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.d
oFilter(FilterChainProxy.java:275)
> at
>
org.acegisecurity.context.HttpSessionContextIntegrationFilte
r.doFilter(HttpSessionContextIntegrationFilter.java:249)
> at
>
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.d
oFilter(FilterChainProxy.java:275)
> at
>
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChain
Proxy.java:149)
> at
>
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBe
anProxy.java:98)
> at
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilte
r(ServletHandler.java:1084)
> at
>
org.springframework.web.filter.CharacterEncodingFilter.doFil
terInternal(CharacterEncodingFilter.java:96)
> at
>
org.springframework.web.filter.OncePerRequestFilter.doFilter
(OncePerRequestFilter.java:75)
> at
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilte
r(ServletHandler.java:1084)
> at
>
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandl
er.java:360)
> at
>
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHa
ndler.java:216)
> at
>
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandl
er.java:181)
> at
>
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandl
er.java:712)
> at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.
java:405)
> at
>
org.mortbay.jetty.handler.ContextHandlerCollection.handle(Co
ntextHandlerCollection.java:211)
> at
>
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCo
llection.java:114)
> at
>
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapp
er.java:139)
> at org.mortbay.jetty.Server.handle(Server.java:313)
> at
>
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnectio
n.java:506)
> at
>
org.mortbay.jetty.HttpConnection$RequestHandler.content(Http
Connection.java:844)
> at
org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
> at
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:
211)
> at
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:
381)
> at
>
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEn
dPoint.java:396)
> at
>
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedT
hreadPool.java:442)
> Caused by: java.lang.NoSuchMethodException:
> com.getrolling.cis.webapp.action.PhotoAction.upload()
> at java.lang.Class.getMethod(Class.java:1605)
> at
>
org.apache.struts2.interceptor.validation.AnnotationValidati
onInterceptor.getActionMethod(AnnotationValidationIntercepto
r.java:55)
> at
>
org.apache.struts2.interceptor.validation.AnnotationValidati
onInterceptor.doIntercept(AnnotationValidationInterceptor.ja
va:41)
> at
>
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.
intercept(MethodFilterInterceptor.java:86)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
com.opensymphony.xwork2.interceptor.ConversionErrorIntercept
or.intercept(ConversionErrorInterceptor.java:123)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
com.opensymphony.xwork2.interceptor.ParametersInterceptor.do
Intercept(ParametersInterceptor.java:167)
> at
>
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.
intercept(MethodFilterInterceptor.java:86)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
com.opensymphony.xwork2.interceptor.StaticParametersIntercep
tor.intercept(StaticParametersInterceptor.java:105)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
org.apache.struts2.interceptor.CheckboxInterceptor.intercept
(CheckboxInterceptor.java:83)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
org.apache.struts2.interceptor.FileUploadInterceptor.interce
pt(FileUploadInterceptor.java:268)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.i
ntercept(ModelDrivenInterceptor.java:74)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterce
ptor.intercept(ScopedModelDrivenInterceptor.java:127)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
org.apache.struts2.interceptor.ProfilingActivationIntercepto
r.intercept(ProfilingActivationInterceptor.java:107)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
org.apache.struts2.interceptor.debugging.DebuggingIntercepto
r.intercept(DebuggingInterceptor.java:206)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
com.opensymphony.xwork2.interceptor.ChainingInterceptor.inte
rcept(ChainingInterceptor.java:115)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercep
t(I18nInterceptor.java:143)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doInt
ercept(PrepareInterceptor.java:121)
> at
>
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.
intercept(MethodFilterInterceptor.java:86)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
org.apache.struts2.interceptor.ServletConfigInterceptor.inte
rcept(ServletConfigInterceptor.java:170)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
com.opensymphony.xwork2.interceptor.AliasInterceptor.interce
pt(AliasInterceptor.java:123)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
com.opensymphony.xwork2.interceptor.ExceptionMappingIntercep
tor.intercept(ExceptionMappingInterceptor.java:176)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
org.apache.struts2.interceptor.FileUploadInterceptor.interce
pt(FileUploadInterceptor.java:268)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:224)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfilin
g(DefaultActionInvocation.java:223)
> at
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profil
e(UtilTimerStack.java:455)
> at
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(Defau
ltActionInvocation.java:221)
> at
>
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActi
onProxy.java:50)
> at
>
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispa
tcher.java:504)
> ... 66 more
>
>
>
--
View this message in context: http://www.n
abble.com/NoSuchMethodException---but-the-method%27s-there-t
f4749360s2369.html#a13581780
Sent from the AppFuse - User mailing list archive at
Nabble.com.
------------------------------------------------------------
---------
To unsubscribe, e-mail: users-unsubscribe appfuse.dev.java.net
For additional commands, e-mail: users-help appfuse.dev.java.net
|