在使用velocityLayout时只能POST显示,在GET无效? - 服务报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

在使用velocityLayout时只能POST显示,在GET无效? - 服务报错

montos 2020-05-31 08:57:58 66

首次学习使用velocity,看到地瓜老大的urlmapp servlet 照抄,发现在post的时候可以正常使用布局,而Get时却什么也没有,无反应,一个空白的,这是怎么回事?

 

index.html 是有一个表单<form>和一个链接<a>

服务无效 velocity报错 sts无效 cut显示 velocitylayout显示
分享到
取消 提交回答
全部回答(1)
  • montos
    2020-05-31 08:58:12

    不可能吧,贴点代码来看看是什么问题。

    ######

     

    <servlet>  
             <servlet-name>velocity</servlet-name>  
             <servlet-class>VelocityServlet</servlet-class>   
             <init-param>  
                 <param-name>org.apache.velocity.toolbox</param-name>  
                 <param-value>/WEB-INF/cfg/velocity-toolbox.xml</param-value>  
             </init-param>           
             <init-param>  
                 <param-name>org.apache.velocity.properties</param-name>  
                 <param-value>/WEB-INF/cfg/velocity.properties</param-value>  
             </init-param>  
             <load-on-startup>1</load-on-startup>  
         </servlet> 
         <servlet-mapping>  
             <servlet-name>velocity</servlet-name>  
             <url-pattern>*.vm</url-pattern>  
         </servlet-mapping>

     

    这是web.xml其中URLMappingServlet照抄,没作改变

     

    public class VelocityServlet extends VelocityLayoutServlet{
        public final static String CURRENT_URI = "current_uri"; //{index}  
        public final static String REQUEST_URI = "request_uri"; //{/index} 
     protected void processTemplate(HttpServletRequest request,
     HttpServletResponse response, boolean isPost) {
         String CUR_URI = (String) request.getAttribute(CURRENT_URI);
         String REQ_URI =(String) request.getAttribute(REQUEST_URI);
         log.info("#####>>>> VelocityServlet:"+REQ_URI);
         log.info(RequestUtils.getParam(request, "p1", "welcome"));
         log.info(RequestUtils.getParam(request, "page", 1));
         
     }
        public void doGet(HttpServletRequest request,
                HttpServletResponse response)
     throws IOException, ServletException
     {
         log.info("#####>>>> VelocityServlet: doGet"); 
         processTemplate(request,response, false);
     }
     public void doPost(HttpServletRequest request,
                HttpServletResponse response)
     throws IOException, ServletException
     {
         log.info("#####>>>> VelocityServlet: doPost"); 
         processTemplate(request,response, true);
     }
    }
    

     

     

    这里只有doPost会用到layout,可以使用layout.vm

    velocity.properties
    
    input.encoding = UTF-8
    output.encoding = UTF-8
    tools.view.servlet.error.template = error.vm
    file.resource.loader.class = org.apache.velocity.tools.view.WebappResourceLoader
    tools.view.servlet.layout.directory = /WEB-INF/layout/
    tools.view.servlet.layout.default.template =  layout.vm
    ######

    代码看不出来有问题,是不是页面没指定 #set($layout="layout.vm") 啊?

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

最新问题