【发布时间】:2014-11-18 22:03:39
【问题描述】:
我正在使用 Spring-MVC 和 JSP,除了我的“取消”按钮外,一切正常。我有一个包含 /edit 和 /save 的控制器。进入 /edit,百分比值必须呈现为 (0 >= x >= 100) 值。保存时,我们必须保存为百分比 (0 >= x >= 1.0)。在编辑表单中,如果您更改百分比值并点击取消,则不会进行更改,但该值将与之前的值相比 *100。例如,如果您在表单上有 15%,并且在编辑下更改为 17.5 然后点击取消,则该值将变为 1500 而不是 15。
该值显然是 *100,但在取消期间永远不会恢复。我在 isCancelled(request) 之前放置了 /100 行,但这会使数字错误地更新为取消的内容。在上面的例子中,0.175 可以节省。保存通过休眠进入数据库,虽然我们从来没有保存(modelBean)。
是否有适当的方法来操作视图上的数字,但不将更改提交到数据库?我想在后端进行更改以避免用户恶作剧。
如果我可以提供任何进一步的信息/细节,请告诉我。
@RequestMapping(value = "/edit")
public String edit(@ModelAttribute("activeForm") SomeForm form, @RequestParam(value = "id", required = true) Long id) {
MyBean bean = getBeanById(id);
// Converts % to user friendly xx.xx.
if (form.getPercentage() != null) {
double per = form.getPercentage() * 100.0d;
form.setPercentage(per);
bean.setPercentage(per);
}
return someString;
}
@RequestMapping(value = "/save")
public String save(HttpServletRequest request, @ModelAttribute("activeForm") SomeForm form) {
if (isCancelled(request)) {
return REDIRECT_SUMMARY;
}
MyBean modelBean= getModel(form);
// Converts user friendly xx.xx to %.
if (form.getPercentage() != null) {
double per = form.getPercentage() / 100.0d;
form.setPercentage(per);
modelBean.setPercentage(per);
}
save(modelBean);
return someString;
}
public class SomeForm {
private Double m_percentage = 1.0d;
private Long m_id;
// getters & setters here
}
<form:from action="/save" method="POST" modelAttribute="activeForm">
<td><form:input path="valuationPercentage" maxlength="6" />%</td>
<jsp:include page="/lib/buttons.jsp" />
</form:form>
【问题讨论】:
标签: java javascript hibernate jsp spring-mvc