开发者社区> 问答> 正文

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

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

 

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

展开
收起
montos 2020-05-31 08:57:58 732 0
1 条回答
写回答
取消 提交回答
  • 不可能吧,贴点代码来看看是什么问题。

    ######

     

    <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") 啊?

    2020-05-31 08:58:12
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载