Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 基于GAE的Spring MVC表单_Google App Engine_Forms_Spring Mvc - Fatal编程技术网

Google app engine 基于GAE的Spring MVC表单

Google app engine 基于GAE的Spring MVC表单,google-app-engine,forms,spring-mvc,Google App Engine,Forms,Spring Mvc,我正在尝试使用Spring框架创建一个表单,但是根据 对此http://groups.google.com/group/google-appengine-java/ 浏览_thread/thread/d93fd7385bf85bf7,我需要重写initBinder。 好吧,我想我做到了,但它仍然不起作用 我的jsp价格增加jsp: <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="fals

我正在尝试使用Spring框架创建一个表单,但是根据 对此http://groups.google.com/group/google-appengine-java/ 浏览_thread/thread/d93fd7385bf85bf7,我需要重写initBinder。 好吧,我想我做到了,但它仍然不起作用

我的jsp价格增加jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java"
isELIgnored="false" session="false" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/
form" %>
<form:form method="post" commandName="priceIncrease">
   Increase (%): <form:input path="percentage"/>
  <input type="submit" value="Execute">
</form:form>
PriceIncreaseFormController.java:

public class PriceIncreaseFormController extends SimpleFormController
{
   private ProductManager productManager;

   public ModelAndView onSubmit(Object command)  throws
ServletException {
       PriceIncrease priceIncrease = (PriceIncrease) command;
       Integer increase = priceIncrease.getPercentage();
       productManager.increasePrice(increase);
       return new ModelAndView(new RedirectView(getSuccessView()));
   }

   public void initBinder(WebDataBinder binder, WebRequest request)
{
       binder.registerCustomEditor(PriceIncrease.class, new
PriceIncreaseEditor());
       binder.registerCustomEditor(Integer.class, 
           new CustomNumberEditor(Integer.class, true)); // use this instead?
   }

   public void setProductManager() {...}
   public ProductManager getProductManager {...}
}
最后,PriceIncreaseEditor.java:这可能是错误的

public class PriceIncreaseEditor extends PropertyEditorSupport{

   @Override
   public void setAsText(String text) throws IllegalArgumentException
{
       Integer increase = new Integer(text);
       super.setValue(increase);
   }
}
堆栈跟踪:

org.springframework.web.servlet.tags.RequestContextAwareTag
doStartTag: access denied (java.lang.RuntimePermission getClassLoader)
java.security.AccessControlException: access denied
(java.lang.RuntimePermission getClassLoader)
       at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:
355)
       at
java.security.AccessController.checkPermission(AccessController.java:
567)
       at java.lang.SecurityManager.checkPermission(SecurityManager.java:
549)
       at
com.google.apphosting.runtime.security.CustomSecurityManager.checkPermission(CustomSecurityManager.java:
45)
       at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1311)
       at
org.springframework.beans.BeanUtils.findEditorByConvention(BeanUtils.java:
368)
       at
org.springframework.validation.AbstractPropertyBindingResult.getCustomEditor(AbstractPropertyBindingResult.java:
110)
       at
org.springframework.validation.AbstractPropertyBindingResult.formatFieldValue(AbstractPropertyBindingResult.java:
87)
       at
org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:
230)
       at
org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:
120)
       at
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:
172)
       at
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:
192)
       at
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:
158)
       at
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:
145)
       at
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:
136)
       at
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:
120)
       at
org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:
379)
       at
org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:
139)
       at
org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:
90)
       at
org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:
77)
       at
org.apache.jsp.WEB_002dINF.jsp.priceincrease_jsp._jspx_meth_form_005finput_005f0(priceincrease_jsp.java:
149)
       at
org.apache.jsp.WEB_002dINF.jsp.priceincrease_jsp._jspService(priceincrease_jsp.java:
82)
       at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
       at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
       at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
390)
       at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
       at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
       at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
       at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
       at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
       at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
       at
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:
240)
       at
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:
258)
       at
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:
1174)
       at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:
901)
       at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:
809)
       at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:
571)
       at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:
501)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
       at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
       at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
       at
com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:
97)
       at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
       at
com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:
35)
       at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
       at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
       at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
       at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
       at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
       at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
       at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
       at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
       at
com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:
238)
       at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
       at org.mortbay.jetty.Server.handle(Server.java:326)
       at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
542)
       at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:923)
       at
com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:
76)
       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
       at
com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:
135)
       at
com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
261)
       at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:8495)
       at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:8493)
       at
com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:
24)
       at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:
435)
       at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:
572)
       at com.google.tracing.TraceContext$TraceContextRunnable
$1.run(TraceContext.java:448)
       at com.google.tracing.TraceContext.runInContext(TraceContext.java:
688)
       at com.google.tracing.TraceContext
$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:
326)
       at com.google.tracing.TraceContext
$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:
318)
       at com.google.tracing.TraceContext
$TraceContextRunnable.run(TraceContext.java:446)
       at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1110)
       at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:603)
       at java.lang.Thread.run(Thread.java:636)
我已经被困了一段时间了。。。有什么想法吗?

SimpleFormController.initBinder HttpServletRequest请求,ServletRequestDataBinder binder,而initBinder以相反的顺序接受参数


所以你还没有覆盖它。试着改变论点的顺序。每当你想重写任何东西时,在上面加上@override,这样编译器就可以为你捕获像这样的错误。

这是许多问题中的一个。我终于让它起作用了。谢谢
public class PriceIncreaseEditor extends PropertyEditorSupport{

   @Override
   public void setAsText(String text) throws IllegalArgumentException
{
       Integer increase = new Integer(text);
       super.setValue(increase);
   }
}
org.springframework.web.servlet.tags.RequestContextAwareTag
doStartTag: access denied (java.lang.RuntimePermission getClassLoader)
java.security.AccessControlException: access denied
(java.lang.RuntimePermission getClassLoader)
       at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:
355)
       at
java.security.AccessController.checkPermission(AccessController.java:
567)
       at java.lang.SecurityManager.checkPermission(SecurityManager.java:
549)
       at
com.google.apphosting.runtime.security.CustomSecurityManager.checkPermission(CustomSecurityManager.java:
45)
       at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1311)
       at
org.springframework.beans.BeanUtils.findEditorByConvention(BeanUtils.java:
368)
       at
org.springframework.validation.AbstractPropertyBindingResult.getCustomEditor(AbstractPropertyBindingResult.java:
110)
       at
org.springframework.validation.AbstractPropertyBindingResult.formatFieldValue(AbstractPropertyBindingResult.java:
87)
       at
org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:
230)
       at
org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:
120)
       at
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:
172)
       at
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:
192)
       at
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:
158)
       at
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:
145)
       at
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:
136)
       at
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:
120)
       at
org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:
379)
       at
org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:
139)
       at
org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:
90)
       at
org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:
77)
       at
org.apache.jsp.WEB_002dINF.jsp.priceincrease_jsp._jspx_meth_form_005finput_005f0(priceincrease_jsp.java:
149)
       at
org.apache.jsp.WEB_002dINF.jsp.priceincrease_jsp._jspService(priceincrease_jsp.java:
82)
       at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
       at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
       at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
390)
       at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
       at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
       at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
       at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
       at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
       at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
       at
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:
240)
       at
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:
258)
       at
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:
1174)
       at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:
901)
       at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:
809)
       at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:
571)
       at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:
501)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
       at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
       at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
       at
com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:
97)
       at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
       at
com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:
35)
       at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
       at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
       at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
       at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
       at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
       at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
       at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
       at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
       at
com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:
238)
       at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
       at org.mortbay.jetty.Server.handle(Server.java:326)
       at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
542)
       at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:923)
       at
com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:
76)
       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
       at
com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:
135)
       at
com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
261)
       at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:8495)
       at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:8493)
       at
com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:
24)
       at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:
435)
       at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:
572)
       at com.google.tracing.TraceContext$TraceContextRunnable
$1.run(TraceContext.java:448)
       at com.google.tracing.TraceContext.runInContext(TraceContext.java:
688)
       at com.google.tracing.TraceContext
$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:
326)
       at com.google.tracing.TraceContext
$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:
318)
       at com.google.tracing.TraceContext
$TraceContextRunnable.run(TraceContext.java:446)
       at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1110)
       at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:603)
       at java.lang.Thread.run(Thread.java:636)