Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
Servlets I';我最近一直在与velocity合作,但我搞得一团糟,我该怎么办?_Servlets_Request_Velocity - Fatal编程技术网

Servlets I';我最近一直在与velocity合作,但我搞得一团糟,我该怎么办?

Servlets I';我最近一直在与velocity合作,但我搞得一团糟,我该怎么办?,servlets,request,velocity,Servlets,Request,Velocity,我制作了一个程序: java是servlet,它应该使用Login.vm模板并对其进行修改。它没有任何作用,我不明白为什么。 在函数中: public Template handleRequest(HttpServletRequest request,HttpServletResponse response, Context ctx ) 如果我说: error= (String) request.getAttribute("error"); ctx.put("error", error);

我制作了一个程序: java是servlet,它应该使用Login.vm模板并对其进行修改。它没有任何作用,我不明白为什么。 在函数中:

public Template handleRequest(HttpServletRequest request,HttpServletResponse response, Context ctx )
如果我说:

 error= (String) request.getAttribute("error");
 ctx.put("error", error);
它没有任何作用。 如果我说:

 error= request.getAttribute("error").toString();
 ctx.put("error", error);
我得到一个Java空指针异常。 但如果我说:

 ctx.put("error","this is a string");
它将模板login.vm的变量更改为该字符串。 为什么它没有从请求中获得属性,我做错了什么


PS:如果我按下Register按钮,它会将我重定向到“/reg.jsp”页面。我做这个只是为了看看它是否有效,但它不起作用。在MVC中使用jsp制作了相同的程序,但我需要使用velocity来制作,以供实习之用。

我最好的猜测是,您的请求中的“error”键下没有属性。它与速度本身无关。如果您检查出现空异常的行号,它应该是代码摘录的第一行


请注意,在web环境中,您应该使用velocity tools子项目中的VelocityViewServlet,而不是将在下一版本中消失的弃用VelocityServlet。

10x Andrew Aylett,以使我的问题更具可视性。:DI将其更改为VelocityViewServlet,将Properties类更改为ExtendedProperties(在更改为ExtendedVelocityViewServlet后,在那里有一个错误),现在,当我运行该程序时,我得到一个类似这样的错误:键入异常报告消息描述服务器遇到内部错误()这使它无法满足这一要求。异常javax.servlet.ServletException:servlet velo.Login引发的servlet.init()异常是什么意思?我将其更改为error=request.getAttribute(“error”).toString();要了解为什么我会有一个java空指针异常,而错误就在这一行,一切正常,直到它出现为止。我尝试将request.getAttribute(“error”).toString()放在代码的其他部分,而不是放在模板函数中,并且没有错误。PS:在模板(login.vm)中,如何声明内部错误通常有一个提供更多信息的根本原因。如果显示的内部错误不够明确,则应检查servlet容器日志文件。如果你没有自己解决相关问题,请尝试识别并在此处发布最相关的行。你的P.S.与你原来的问题无关。我想您必须从Java代码中将userBean放在某个地方(为什么不作为会话属性?)。请记住,您可以使用$request、$session和$application从模板中访问J2EE属性。我一回到办公室就会这样做