Spring MutiActionController实现FormController在Controller中的代码事例

本文介绍了一个用于资源发布的处理方法及资源项验证的过程。主要内容包括处理资源发布请求的方法,其中包括了数据绑定、验证、更新和插入操作。同时,还详细说明了资源项验证类的工作流程,确保所有必要的字段都已正确填写。
[code] public ModelAndView handelXqResourcePublish(HttpServletRequest request,
HttpServletResponse response) throws ServletException {
Map model = new HashMap();
try {
//绑定
XqZyfbFormBean formBean = new XqZyfbFormBean();
BindException errorModule = bindObject(request, formBean,
new XqzyfbValidator());
if (errorModule.hasErrors())
formBean.setOperation(XqZyfbFormBean._VIEW);

//取得绑定后模型
model = errorModule.getModel();

//插入或者更新
if (XqZyfbFormBean._UPDATE.equals(formBean.getOperation())) {
XqZyfbModel pojo = new XqZyfbModel();
pojo.setPkid(formBean.getPkid());
pojo.setCustname(formBean.getCustname());
pojo.setPtid(formBean.getPtid());
pojo.setProdid(formBean.getProdid());
pojo.setPcname(formBean.getPcname());
pojo.setLen(formBean.getLen());
pojo.setSl(formBean.getSl());
pojo.setDj(formBean.getDj());
pojo.setJhadr(formBean.getJhadr());
pojo.setJhdt(formBean.getJhdt());
pojo.setNote(formBean.getNote());
pojo.setCmdeptid(new Integer(getUser(request).getCmdeptid()));
pojo.setLinkmanid(getUser(request).getLinkmanid());
generalService.saveXqResourcePublish(pojo);
model.put("errMsg", "操作成功!");
model.put("url", "/cm/resource/stockXqResource.do?ptid="
+ formBean.getParamptid() + "&prodid="
+ formBean.getParamprodid() + "&cmdeptid="
+ formBean.getParamcmdeptid());
return new ModelAndView("openerlocation", model);
}

//修改取数据
if (null!=formBean.getPkid()&&formBean.getPkid().intValue()>0)
{
XqZyfbModel pojo = generalService.selectXqResourceDetail(formBean.getPkid());
formBean.setPkid(pojo.getPkid());
formBean.setCustname(pojo.getCustname());
formBean.setPtid(pojo.getPtid());
formBean.setProdid(pojo.getProdid());
formBean.setPcname(pojo.getPcname());
formBean.setLen(pojo.getLen());
formBean.setSl(pojo.getSl());
formBean.setDj(pojo.getDj());
formBean.setJhadr(pojo.getJhadr());
formBean.setJhdt(pojo.getJhdt());
formBean.setNote(pojo.getNote());
}

//新增准备数据
model.put("prodtypes", generalService.selectProductType());
model.put("products", generalService.selectProduct());
model.put("selectproducts", generalService.selectProduct());
} catch (Exception e) {
log.error("", e);
return new ModelAndView("error");
}
return new ModelAndView("index_XqResourcePublish", model);
} [/code]

[code]public class ResourceItemValidator extends AbstractValidator {
public void validate(Object obj, Errors errors) {
ResourceItemFormbean formBean = (ResourceItemFormbean) obj;
if (null == formBean.getBatid() || formBean.getBatid().intValue() <= 0) {
errors.rejectValue("batid", "batid.required", null, "default message!");
}
if (ResourceItemFormbean._SUBMIT.equals(formBean.getAction())) {

if (null == formBean.getCustid()
|| formBean.getCustid().intValue() <= 0) {
errors
.rejectValue("custid", "custid.required", null,
"default message!");
}
if (null == formBean.getJs() || formBean.getJs().intValue() <= 0) {
errors.rejectValue("js", "custid.required", null,
"default message!");
}
if (null == formBean.getSl() || formBean.getSl().doubleValue() <= 0) {
errors.rejectValue("sl", "custid.required", null,
"default message!");
}
if (null == formBean.getDj() || formBean.getDj().intValue() <= 0) {
errors.rejectValue("dj", "dj.required", null,
"default message!");
}
}
}
}[/code]

[code]<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="/WEB-INF/c.tld" %>
<%@ taglib prefix="fmt" uri="/WEB-INF/fmt.tld" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<script language="javascript">
<!--
window.onload=function(){
form = document.cmForm;
if (tper>0) form.sl.readOnly=true;
var error = "";
<spring:bind path="command.*">
<c:forEach items="${status.errorMessages}" var="errorMessage">
error=error+"<c:out value="${errorMessage}"/>\n";
</c:forEach>
</spring:bind>
if (""!=error)
{
alert(error);
}
}
-->
</script>
<form:form commandName="command" name="cmForm" action="/cm/resource/resourceSale.do">
<form:hidden path="batid"/>
<input type="hidden" name="action" value="submit">
<form:select path="custid" cssStyle="width:100%">
<form:option value="" label=""/>
<form:options items="${customer}" itemValue="custid" itemLabel="name"/>
</form:select>
<form:input path="address" cssStyle="width:100%"/>
<form:input path="js" cssStyle="width:100%" onblur="calculatSl();"/>
<form:input path="sl" cssStyle="width:100%" onblur="calculatJe();"/>
<form:input path="dj" cssStyle="width:100%" onblur="calculatJe();"/>
<form:input path="je" cssStyle="width:100%" readonly="true"/>
<form:textarea path="memo" cssStyle="width:100%" rows="2"/>
<input type="button" name="btnOK" class="cbutton" onclick="doSubmit();" value="确定">
<input type="button" name="btnCancle" onclick="window.close();" class="cbutton" value="取消">
</form:form>[/code]
Spring Boot应用中实现网页按钮点击逻辑,通常涉及前端界面后端控制器之间的交互。按钮点击事件可以触发页面跳转、数据提交、异步更新等行为,具体实现方式如下: ### 3.1 前端按钮定义事件绑定 在HTML页面中,通过`<button>`标签定义按钮,并使用JavaScript绑定点击事件。例如,以下代码定义了一个按钮,并在点击时弹出提示框: ```html <button onclick="showMessage()">点击我</button> <script> function showMessage() { alert("按钮被点击!"); } </script> ``` 如果按钮需要后端交互,可以使用`fetch`或`XMLHttpRequest`发送请求到后端API端点。 ### 3.2 后端控制器处理按钮点击逻辑 在Spring Boot中,使用`@RestController`或`@Controller`注解定义控制器类,并通过`@PostMapping`或`@GetMapping`注解定义处理按钮点击的接口方法。 例如,以下代码定义了一个处理POST请求的接口,用于响应按钮点击事件: ```java @RestController public class ButtonController { @PostMapping("/button-click") public String handleButtonClick() { return "按钮点击成功,后端已处理"; } } ``` 前端可以使用AJAX方式调用该接口: ```html <button onclick="sendRequest()">点击提交</button> <script> function sendRequest() { fetch('/button-click', { method: 'POST' }) .then(response => response.text()) .then(data => { alert(data); }); } </script> ``` ### 3.3 使用表单提交实现按钮点击逻辑 另一种常见方式是通过HTML表单提交按钮触发后端处理。例如: ```html <form action="/submit-form" method="post"> <button type="submit">提交</button> </form> ``` 后端控制器中定义对应的处理逻辑: ```java @RestController public class FormController { @PostMapping("/submit-form") public String handleFormSubmission() { return "表单已提交"; } } ``` ### 3.4 使用Spring Boot实现页面跳转 如果按钮点击后需要跳转页面,可以在控制器中返回视图名称。例如: ```java @Controller public class NavigationController { @GetMapping("/navigate") public String navigateToPage() { return "targetPage"; // 返回视图名称 } } ``` 前端HTML中可以使用超链接或按钮触发跳转: ```html <a href="/navigate"><button>跳转页面</button></a> ``` ### 3.5 异步加载数据并更新页面内容 使用AJAX可以实现点击按钮后从后端获取数据并局部更新页面内容。例如,以下代码中,按钮点击后会异步获取数据并显示在页面上: ```html <button onclick="loadData()">加载数据</button> <div id="data-container"></div> <script> function loadData() { fetch('/api/data') .then(response => response.text()) .then(data => { document.getElementById('data-container').innerText = data; }); } </script> ``` 对应的后端接口如下: ```java @RestController public class DataController { @GetMapping("/api/data") public String getData() { return "这是从服务器返回的数据"; } } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值