thymeleaf标签失效

onclick功能为点击跳转到page+或-1的页面,但是点击上一页全部跳转到-1,并且下一页和尾页按钮无法显示,将下一页按钮删去后尾页按钮可以显示并且可以跳转,可以知道的是中间上一页和下一页的功能有问题,但不知道错哪了。而且disabled标签也是失效的

        <div style="width:60%;margin-left:20%;border:0px solid red;padding-top:4px;" class="center" th:each="pageNO : ${session.pageNO}">
            <input type="button" value="首  页1" class="btn" th:onclick="|page(1)|" th:disabled="${session.pageNo==1}"/>
            <input type="button" value="上一页" class="btn" th:onclick="|page(${pageNo-1})|" th:disabled="${pageNo==1}"/>
            <input type="button" value="下一页" class="btn" th:onclick="|page(${pageNo+1})|" th:disabled="${pageNo==session.pageCount}"/>
            <input type="button" value="尾页" class="btn" th:onclick="|page(${session.pageCount})|" th:disabled="${pageNo==session.pageCount}"/>
        </div>

servlet代码

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        int pageNo=1;
        String pagestr=req.getParameter("pageNo");
        if(StringUtil.isnotEmpty(pagestr)){
            pageNo = Integer.parseInt(pagestr);
        }
        HttpSession session=req.getSession();
        session.setAttribute("pageNO",pageNo);
        FruitDAO fruitDAO=new fruitdaoimpl();
        int fruitcount=fruitDAO.getfruitcount();
        int pageCount=(fruitcount+5-1)/5;
        session.setAttribute("pageCount",pageCount);
        List<Fruit> fruitList = fruitDAO.getFruitList(pageNo);
        //保存作用域
        session.setAttribute("fruitList",fruitList);
super.processTemplate("index",req,resp);
    }

【以下回答由 GPT 生成】

问题分析

根据代码和描述,有以下几个问题需要解决:

  1. 上一页按钮无法正确跳转到前一页。
  2. 下一页和尾页按钮无法正确显示。
  3. disabled 标签没有起作用。

解决方案

问题1:上一页按钮无法正确跳转到前一页

问题的根源在于Thymeleaf模板中的表达式${pageNo-1}没有正确解析。

在Thymeleaf的表达式中,当使用数值运算时,需要使用+-来代替数学运算符+-。所以${pageNo-1}应改为${pageNo-1}

修改后的代码如下:

<div style="width:60%;margin-left:20%;border:0px solid red;padding-top:4px;" class="center" th:each="pageNO: ${session.pageNO}">
    <input type="button" value="首  页1" class="btn" th:onclick="|page(1)|" th:disabled="${session.pageNo==1}"/>
    <input type="button" value="上一页" class="btn" th:onclick="|page(${pageNo-1})|" th:disabled="${pageNo==1}"/>
    <input type="button" value="下一页" class="btn" th:onclick="|page(${pageNo+1})|" th:disabled="${pageNo==session.pageCount}"/>
    <input type="button" value="尾页" class="btn" th:onclick="|page(${session.pageCount})|" th:disabled="${pageNo==session.pageCount}"/>
</div>

问题2:下一页和尾页按钮无法正确显示

问题的原因是在${pageNo==session.pageCount}表达式中,变量pageNo没有正确引用。

因为在th:each指令中定义了一个迭代变量pageNO,所以在表达式中需要使用pageNO而不是pageNo

修改后的代码如下:

<div style="width:60%;margin-left:20%;border:0px solid red;padding-top:4px;" class="center" th:each="pageNO: ${session.pageNO}">
    <input type="button" value="首  页1" class="btn" th:onclick="|page(1)|" th:disabled="${session.pageNo==1}"/>
    <input type="button" value="上一页" class="btn" th:onclick="|page(${pageNO-1})|" th:disabled="${pageNO==1}"/>
    <input type="button" value="下一页" class="btn" th:onclick="|page(${pageNO+1})|" th:disabled="${pageNO==session.pageCount}"/>
    <input type="button" value="尾页" class="btn" th:onclick="|page(${session.pageCount})|" th:disabled="${pageNO==session.pageCount}"/>
</div>

问题3:disabled 标签没有起作用

disabled 标签无法实现的原因是HTML中的按钮默认是可点击的,不管有没有设置disabled属性都可以点击。

要解决这个问题,我们需要使用Thymeleaf的th:attr标签来设置disabled属性。

修改后的代码如下:

<div style="width:60%;margin-left:20%;border:0px solid red;padding-top:4px;" class="center" th:each="pageNO: ${session.pageNO}">
    <input type="button" value="首  页1" class="btn" th:onclick="|page(1)|" th:disabled="${session.pageNo==1}"/>
    <input type="button" value="上一页" class="btn" th:onclick="|page(${pageNO-1})|" th:attr="disabled=${pageNO==1} ? 'disabled' : null"/>
    <input type="button" value="下一页" class="btn" th:onclick="|page(${pageNO+1})|" th:attr="disabled=${pageNO==session.pageCount} ? 'disabled' : null"/>
    <input type="button" value="尾页" class="btn" th:onclick="|page(${session.pageCount})|" th:attr="disabled=${pageNO==session.pageCount} ? 'disabled' : null"/>
</div>

总结

以上就是解决Thymeleaf标签失效的问题的具体步骤。根据问题描述和代码分析,我们找到了问题的根源并提供了相应的解决方案。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^