当前位置: 首页 > 知识库问答 >
问题:

钢板SpringMVC按钮执行Java方法

夏令秋
2023-03-14

这是我HTML文件中的内容:

<ul>
    <th:block th:object="${Post}">
        <li class="post" th:each="Post : ${Posts}">
            <p  th:text ="${Post.getPostText()}"></p>
            <button th:onclick = "${Post.upvote()}">Upvote</button>
            <button th:onclick = "${Post.downvote()}">Downvote</button>
            <p th:text = "${Post.getPostVotes()}"></p>
        </li>
    </th:block>
</ul>

我希望按钮在Post类中执行一个方法。我不确定我是否使用了正确的Thymeleaf“标记”。现在,当页面加载时,它执行post-upvote和downvote方法。有人能帮忙吗?我觉得我用错了Thymeleaf标签。

共有2个答案

孟俊晖
2023-03-14

我之所以不能做我想做的事情,是因为Thymeleaf像加载页面之前一样生成HTML。它不会在HTML中等待触发。最后,我把HTML改成了一个不同的URL,这个URL对于帖子来说是唯一的。

<ul>
    <th:block th:object="${Post}">
        <li class="post" th:each="Post : ${Posts}">
            <p th:text ="${Post.getPostText()}"></p>
            <a th:href = "@{/post?id={id}&vote=1(id=${Post.getPostId()})}">Upvote</a>
            <a th:href = "@{/post?id={id}&vote=0(id=${Post.getPostId()})}">Downvote</a>
            <p th:text = "${Post.getPostVotes()}"></p>
        </li>
    </th:block>
</ul>

这是我控制器中相应的java代码,用于更新对象:

@RequestMapping(value = "/post", params = {"id", "vote"})
public String PostVoting(@RequestParam("id") Long id, @RequestParam("vote") int vote)
{
    if (currentUser.voteOnPost(id.toString())){
        return "redirect:/home";
    }
    if(vote == 1){
        int votes = thePostRepository.findById(id).get().getPostVotes() + 1; 
        thePostRepository.updateVotes(votes, id);
    }
    else{
        int votes = thePostRepository.findById(id).get().getPostVotes() - 1; 
        thePostRepository.updateVotes(votes, id);
    }

    return "redirect:/home";
}

此外,如果您想像我一样更新内容,下一部分很重要:

@Transactional
@Modifying
@Query("UPDATE Post SET votes = :votes WHERE id = :id")
void updateVotes(@Param("votes") int votes, @Param("id") Long id);
曾沛
2023-03-14

您需要执行post或get请求来调用这些方法。这只适用于JSF,但您可以在de-page呈现为html之前执行该方法。

例如,这条线

<p  th:text ="${post.getPostText()}"></p>

将在页面呈现之前执行。

我在这里要做的是隐藏两个动作的一个表单,两个带有名称属性的按钮,并传递某种标识符以了解我正在更新的巫婆实体。在我的控制器中,有两个方法响应每个参数并返回视图或JSON。

 类似资料:
  • 我怎么能确定这个方法给出的值是有效和准确的呢?有没有办法评估这种方法有多准确?

  • 问题内容: 我尝试以多种方式修复此问题,并尝试在各处搜索答案,我的颜色按钮正常工作,但内置数字按钮无法正常工作。 我的按钮0不起作用…所以我无法继续编写代码。 问题答案: 我的按钮0不起作用…所以我无法继续编写代码。 您没有向按钮添加ActionListener。 但是,在解决该问题之前,您应该简化代码,并学习如何使用循环来创建具有相同功能的多个组件。这是一个创建单个ActionListener并

  • 问题内容: 我正在从此处(http://www.asp.net/Ajax/Documentation/Live/tutorials/IntroductionUpdatePanel.aspx)跟踪如何使用更新面板的简单示例。在更新面板之外,我还有另一个html输入控件,该控件调用一个javascript函数,该函数在警报框中向用户显示计数。简单的东西。我的问题是,在IIS和内置的asp.net We

  • 我正准备制作一个新的应用程序,我偶然发现了一个非常酷的侧边栏(按钮面板),我将尝试添加到应用程序中(它是Spotify上的左侧栏)。我很好奇的是这个原则(看看附上的图片)。 在顶部的3个按钮中(我假设是JList或JTable项)。 在中间我们有一个“您的音乐”标题(也许是JLabel??) 我们还有一个新的播放列表(JButton) ,然后是播放列表列表(JList还是jtable?) 我想知道

  • 问题内容: 我的用例是在pdf页面上有一个类似的按钮(确实是将它们添加到现有页面上,但是现在我只想看到它可以在任何东西上工作)。 它所做的只是关闭当前的pdf页面。想法是打开多个选项卡,每个选项卡都是一个pdf,然后当您单击“后退”按钮时,它将关闭当前pdf,然后将其聚焦到上一个pdf。到目前为止,这是我一直在尝试使用的。 而且我似乎看不到pdf页面上的任何内容(它全是白色),我确实获得了至少至少

  • 我有一个actionBar: 如何更改静音按钮文本的样式,使其不加粗、较小且颜色不同?将android:actionMenuTextColor添加到AppTheme没有效果。定义android:actionBarStyle也没有效果,就像它被忽略了一样!我已经看过了所有其他我能找到的答案,没有什么是有效的! 以下是生成上述actionbar的样式: