[英]How to update model bean partially?
我有大約100個字段的bean。
在jsp上,我有20個可以更新的字段。
提交表單時,我只需要更新20個字段,並保留所有其余字段(80個),而無需更改具體的bean。
我知道我可以從數據庫中讀取bean並編寫20個setter,然后更新bean。 寫20個請求參數作為控制器方法的參數也是很丑陋的
春天是否提供解決問題的更優雅方式?
在提供jsp表單的視圖名稱的處理程序中,您可以初始化一個新的模型bean。 這將導致bean具有所有bean字段的默認值。 或者,您可以從可能已設置bean字段值的應用程序上下文中注入它。
將此bean作為模型屬性傳遞給jsp表單視圖。
bean = context.getBean("beanName") or bean = new Bean();
modelAndView.addObject("bean",bean);
現在使用@SessionAttributes在會話中包含此模型對象。
@SessionAttributes("bean")
一旦您的處理程序方法完成執行,您的bean就將與所有字段值一起寫入會話范圍。
您可以使用以下表格來更新20個字段
<form:form action="handler's requestMapping" modelattribute="bean">
<form:input path="bean's first property name" />
<%-- other properties similarly -->
</form:form>
在處理表單提交的處理程序方法中,使用@ModelAttribute訪問作為模型屬性提交給表單的Bean。
@RequestMapping("XXXX")
public ModelAndView/String handlerMethod(@ModelAttribute("bean") Bean bean) { /* method code here */
}
一旦在表單提交時調用了此處理程序方法,spring就會從會話范圍中讀取bean,並且同時僅更新在表單中更新的那20個字段。 這樣,僅更新了您的20個字段,而其他字段則保持原樣。
如果我正確理解,我們只是試圖將org.dozer.DozerBeanMapper
傾向於將某些字段從一個bean復制到另一個bean,這將為我們完成必要的工作。
new DozerBeanMapper().map(sourceObj, targetObj);
https://howtodoinjava.com/automation/dozer-bean-mapping-examples/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.