gpt4 book ai didi

java - Spring Portlet MVC 中的一系列重复表单

转载 作者:行者123 更新时间:2023-11-30 11:48:28 24 4
gpt4 key购买 nike

我有一个相当简单的用例。参与者是向员工列表提供反馈的经理。

该 View 显示员工列表。经理(用户)可以单击打开反馈表(内联)的每个员工以捕获反馈。

我有一个 List<Employee>我用它来构建页面上的员工列表。我无法理解如何构建和捕获反馈。我打算有一个单独的 bean,Feedback对应于特定 Employee 的反馈.

我从构建 <form:form> 开始在一个循环中并这样做:

<c:forEach var="employee" items="${employees}" varStatus="stat">
<form:form action="${saveURL}" method="post" modelAttribute="feedback-${stat.index + 1}">
<input type="submit" value="Submit Feedback"/>
</form:form>
</c:forEach>

我试图保留我的 processAction 的签名方法如下:

@RequestMapping(params = "action=save")
public void saveFeedback(ActionRequest request, ActionResponse response, @ModelAttribute("feedback") Feedback feedback, Model model)

不幸的是,我无法继续进行此操作,因为我觉得我在这里遗漏了一些重要的设计部分。

我应该如何构建我的 <form:form>saveFeedback方法来实现我想要做的事情?

最佳答案

这就是我解决问题的方法。我不得不创建一个包含 Feedback 域对象列表的反馈表单,而不是使用一个反馈表单列表来保存特定于每个迭代的数据。

我的 FeedbackForm 现在看起来像这样:

public class FeedbackForm {
private List<Feedback> feedbacks;

...

getters and setters
}

通常,Feedback 类看起来像:

public class Feedback {
private String feedback;
private int rating;

...

getters and setters
}

现在我的 JSP 看起来像:

<portlet:actionURL var="saveURL">
<portlet:param name="action" value="save" />
<portlet:param name="index" value="${stat.index}" />
</portlet:actionURL>

<c:forEach var="employee" items="${employees}" varStatus="stat">
<form:form action="${saveURL}" method="post" modelAttribute="feedbackForm">
<form:input path="feedbacks[${stat.index}].feedback" />
<form:input path="feedbacks[${stat.index}].rating" />
<input type="submit" value="Submit Feedback"/>
</form:form>
</c:forEach>

最后,我的 Controller 方法如下所示:

@RequestMapping(params = "action=save")
public void saveFeedback(ActionRequest request, ActionResponse response,
@RequestParam("index") int index,
@ModelAttribute("feedbackForm") FeedbackForm feedbackForm, Model model)
throws PortletException {

Feedback feedback = feedbackForm.getFeedbacks().get(index);

logger.debug("Submitted feedback is {}", feedback);
}

想法是不可能同时提交多个表单,尽管它们可能同时出现在页面上。基本上,每个表单只能单击一个提交按钮。

希望这对处于类似情况的人有所帮助。

关于java - Spring Portlet MVC 中的一系列重复表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8791181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com