激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - J2EE中的struts2表單細節處理

J2EE中的struts2表單細節處理

2020-11-23 13:09情似雨餘黏地絮 Java教程

這篇文章主要介紹了J2EE中的struts2表單細節處理的相關資料,需要的朋友可以參考下

/struts-tags中自帶了很多標簽

比如一個簡單的登錄表單,其中自帶了很多的樣式,實際上如果你不需要用到struts的實際功能的時候不建議使用

?
1
2
3
4
5
6
<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>

你可以通過設置屬性 theme="simple"來取消他自帶的樣式

其次是ModelDriven,意思是直接把實體類當成頁面數據的收集對象。在Action實現ModelDriven接口,可以很方便的對實體類對象的屬性賦值,不過在Action中實體類對象要new出來并且重寫ModelDriven的getModel方法,返回值是你的實體類對象代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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;
  }
}

然后是表單的數據回顯,在Action當中把你的實體類對象壓入(ValueStack)堆棧中,然后在頁面中取出堆棧你要的值,方法如下

?
1
2
3
4
5
6
7
8
public String view() {
    UserEntity selectAUserEntity = userDaoImpl.selectAUserEntity(userEntity
        .getId());
    ValueStack valueStack = ActionContext.getContext().getValueStack();
    valueStack.pop();
    valueStack.push(selectAUserEntity);
    return "view";
  }

最后是防止表單重復提交的方法token,我對他的理解是,在表單中如果有<token>標簽的時候,提交表單的同時在表單頁和action中隨機生成一個相同的ID值,當第一次提交過來的表單被接收時這個ID將被刪除,當被重復提交時就會找不到對應的ID值導致無法重復提交,并且發出無效指令的錯誤代碼如下

表單代碼  

?
1
2
3
4
5
6
<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配置文件中使用對應的攔截器,并指出重復提交時,無效的指令將會跳轉到哪一個頁面代碼如下: 

?
1
2
3
4
5
6
<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表單細節處理,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/ShaoXin/p/7068952.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 在线成人免费网站 | 国产日产精品一区二区三区四区 | 国产一区二区视频观看 | 国产一区二区免费在线观看 | 91 免费视频 | 萌白酱福利视频在线网站 | 羞羞的小视频 | 久久精品久久精品国产大片 | 亚洲精品tv久久久久久久久久 | 91在线视频福利 | 成年性羞羞视频免费观看 | 久久国产精品久久久久久电车 | av在线播放免费 | 九艹在线 | 欧美在线成人影院 | 天天草天天操 | 欧美www | 羞羞视频免费网站日本动漫 | 毛片a区| 成人性视频免费网站下载软件 | 久热久操 | 国产午夜精品一区二区三区免费 | 久久久久久久久浪潮精品 | 一级黄色毛片播放 | 久章草影院 | 国产美女视频一区二区三区 | 一区二区免费看 | 中文字幕在线观看精品 | 欧美一区二区三区中文字幕 | 天天色综合6 | 色99久久 | 欧美毛片| 亚洲一区二区中文字幕在线观看 | 久久密 | 嗯~啊~用力~高h | 久久精品黄 | 99影视在线视频免费观看 | 精品xxxx户外露出视频 | 91久久久久久久一区二区 | av色先锋| 色诱亚洲精品久久久久久 |