J2EE中的struts2表單細(xì)節(jié)處理
/struts-tags中自帶了很多標(biāo)簽
比如一個(gè)簡(jiǎn)單的登錄表單,其中自帶了很多的樣式,實(shí)際上如果你不需要用到struts的實(shí)際功能的時(shí)候不建議使用
<s:form action="user_save">
<s:token></s:token>
<s:textfield name="username" label="用戶名"></s:textfield>
<s:textfield name="pwd" label="密碼"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
你可以通過(guò)設(shè)置屬性 theme="simple"來(lái)取消他自帶的樣式
其次是ModelDriven,意思是直接把實(shí)體類當(dāng)成頁(yè)面數(shù)據(jù)的收集對(duì)象。在Action實(shí)現(xiàn)ModelDriven接口,可以很方便的對(duì)實(shí)體類對(duì)象的屬性賦值,不過(guò)在Action中實(shí)體類對(duì)象要new出來(lái)并且重寫(xiě)ModelDriven的getModel方法,返回值是你的實(shí)體類對(duì)象代碼如下:
package com.xinzhi.action;
import java.util.List;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.util.ValueStack;
import com.xinzhi.dao.impl.UserDaoImpl;
import com.xinzhi.entity.UserEntity;
public class UserAction extends ActionSupport implements
ModelDriven<UserEntity> {
private static final long serialVersionUID = 1L;
private UserEntity userEntity = new UserEntity();
UserDaoImpl userDaoImpl = new UserDaoImpl();
public UserEntity getUserEntity() {
return userEntity;
}
public void setUserEntity(UserEntity userEntity) {
this.userEntity = userEntity;
}
public UserEntity getModel() {
return userEntity;
}
}
然后是表單的數(shù)據(jù)回顯,在Action當(dāng)中把你的實(shí)體類對(duì)象壓入(ValueStack)堆棧中,然后在頁(yè)面中取出堆棧你要的值,方法如下
public String view() {
UserEntity selectAUserEntity = userDaoImpl.selectAUserEntity(userEntity
.getId());
ValueStack valueStack = ActionContext.getContext().getValueStack();
valueStack.pop();
valueStack.push(selectAUserEntity);
return "view";
}
最后是防止表單重復(fù)提交的方法token,我對(duì)他的理解是,在表單中如果有<token>標(biāo)簽的時(shí)候,提交表單的同時(shí)在表單頁(yè)和action中隨機(jī)生成一個(gè)相同的ID值,當(dāng)?shù)谝淮翁峤贿^(guò)來(lái)的表單被接收時(shí)這個(gè)ID將被刪除,當(dāng)被重復(fù)提交時(shí)就會(huì)找不到對(duì)應(yīng)的ID值導(dǎo)致無(wú)法重復(fù)提交,并且發(fā)出無(wú)效指令的錯(cuò)誤代碼如下
表單代碼
<s:form action="user_save">
<s:token></s:token>
<s:textfield name="username" label="用戶名"></s:textfield>
<s:textfield name="pwd" label="密碼"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
然后要在struts.xml配置文件中使用對(duì)應(yīng)的攔截器,并指出重復(fù)提交時(shí),無(wú)效的指令將會(huì)跳轉(zhuǎn)到哪一個(gè)頁(yè)面代碼如下:
<action name="user_*" class="com.xinzhi.action.UserAction" method="{1}">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="token">
<param name="includeMethods">save</param>
</interceptor-ref>
</action>
以上所述是小編給大家介紹的J2EE中的struts2表單細(xì)節(jié)處理,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 簡(jiǎn)單談?wù)凷truts動(dòng)態(tài)表單(DynamicForm)
- Struts2中接收表單數(shù)據(jù)的三種驅(qū)動(dòng)方式
- 詳解struts2的token機(jī)制和cookie來(lái)防止表單重復(fù)提交
- Struts2中Action三種接收參數(shù)形式與簡(jiǎn)單的表單驗(yàn)證功能
- Java的Struts框架中登陸功能的實(shí)現(xiàn)和表單處理器的使用
- 通過(guò)Ajax兩種方式講解Struts2接收數(shù)組表單的方法
- struts2中一個(gè)表單中提交多個(gè)請(qǐng)求的例子(多個(gè)提交按鈕)
- 基于Struts2實(shí)現(xiàn)防止表單重復(fù)提交
相關(guān)文章
Java泛型與數(shù)據(jù)庫(kù)應(yīng)用實(shí)例詳解
這篇文章主要介紹了Java泛型與數(shù)據(jù)庫(kù)應(yīng)用,結(jié)合實(shí)例形式詳細(xì)分析了java繼承泛型類實(shí)現(xiàn)增刪改查操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-08-08
Servlet3.0學(xué)習(xí)總結(jié)之基于Servlet3.0的文件上傳實(shí)例
本篇文章主要介紹了Servlet3.0學(xué)習(xí)總結(jié)之基于Servlet3.0的文件上傳實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07
SpringBoot 注解事務(wù)聲明式事務(wù)的方式
springboot使用上述注解的幾種方式開(kāi)啟事物,可以達(dá)到和xml中聲明的同樣效果,但是卻告別了xml,使你的代碼遠(yuǎn)離配置文件。今天就扒一扒springboot中事務(wù)使用注解的玩法,感興趣的朋友一起看看吧2017-09-09
Spring 實(shí)現(xiàn)給Bean屬性注入null值
這篇文章主要介紹了Spring 實(shí)現(xiàn)給Bean屬性注入null值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Java中的關(guān)鍵字_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
關(guān)鍵字也稱為保留字,是指Java語(yǔ)言中規(guī)定了特定含義的標(biāo)示符。對(duì)于保留字,用戶只能按照系統(tǒng)規(guī)定的方式使用,不能自行定義2017-04-04
java實(shí)現(xiàn)ATM取款項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)ATM取款項(xiàng)目的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06

