zoukankan      html  css  js  c++  java
  • Struts1 tag

     

    标签库:
         a) struts框架下的struts标签库
         b) sun jstl c标签库
       

        作用: 1) jsp 和 java代码分离 -- 自定义标签
                  用标签来替代Java的代码
              2) struts标签 能够和struts-config.xml
                  actionForm等特有的对象进行交互

    struts标签库
       html标签 --- 替代基本的html元素

       bean标签 --- 访问JavaBean

       logic标签 --- for
                     if判断  程序结构的标签化

    html标签
     1.html标签
      <% taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
      基本html标记的替代标签

    a)基本的html元素标签 (选择使用)
     <html:html> *****     
          <html:html locale="true"> 对应 <html lang="zh-CN">
     <html:base> *****    
          <html:base/>  对应 <base href="http://localhost:8080/aa.jsp">
                                           当前页面的地址
     <html:img> *******
         <html:img page="images/zhangying.gif"/>
              对应
         <img src="images/zhangying.gif">

        传参数
        <html:img page="jspimage.jsp" paramId="id" paramName="1"/>
          对应
        <img src="jspimage.jsp?id=1"/>        
     

    **** <html:link> 3个属性page href forward
       代替Html中超链接标记
            <a href="sueccess.jsp">跳转</a>  
        
         <html:link page="logout.jsp"> 相对路径page
            注销
         </html:link>
            对应
          <a href="logout.jsp">注销</a>


         <html:link href="http://www.sohu.com"> 绝对路径href
             sohu网站
         </html:link>
           对应
         <a href="http://www.sohu.com">sohu网站</a>


     struts-config.xml中的global-forwards
        forward

         <html:link forward="success">  对应全局转发
               成功页面
         </html:link> 
           对应
         <a href="/success.jsp">成功页面</a>

     传参数:

       paramId 指定传参数的名字 id
       paramName 指定参数的值 1

        <html:link page="/deleteemp.do" paramId="id" paramName="1">
          删除
        </html:link>

        对应
        <a href="/deleteemp.do?id=1">删除</a>


    <html:rewrite>  输出对应的URI 的字符串
                        不产生超链接 
     <html:rewrite page="/deleteemp.do" paramId="id" paramName="1">
        对应
        /deleteemp.do?id=1

    b)基本表单标签 ->form表单  ******
      <html:form>
      <html:text>
      <html:hidden>
      <html:reset>
      <html:submit>
      <html:password>
      <html:checkbox>
      <html:radio>
      <html:file>  ----- 文件类型
      <html:select>
      <html:option>
          对应基本的表单元素  property="" value=""

       <input type="text" name="user" value="">
    对应于
      <html:text property="user" value=""/>

    <input type="checkbox" name="ah" value="1">体育
    <input type="checkbox" name="ah" value="2">游泳
    对应于
    <html:checkbox property="ah" value="1">体育</html:checkbox>
    <html:checkbox property="ah" value="2">游泳</html:checkbox>

      <html:file> ---文件的上传的标签
        common-fileupload-1.0.jar
       实现文件的上传
       actionForm中  FormFile的类型 代表file文件

     用处: <html:file/>  文件上传得
            <html:link/>  页面跳转的


    c)错误和正确信息标签    *******
      jdk的bin中 native2ascii.exe
         编码方式变为Unicode方式
      native2ascii -encoding gb2312 applicationResources.properties
    ApplicationResources_zh_CN.properties


      <html:errors/>
        输出所有actionError的内容

      <html:errors property="uname"/>
        输出key=uname对应的内容

    2.bean标签   访问变量的属性或输出值
                 访问JavaBean

      a)访问http请求信息和jsp隐式对象
    **     <bean:cookie> cookie访问
           <bean:cookie id="mycookie" name="loginname" value="123"/>
               id -- 自己设置Cookie变量的名字
               name -- Cookie对象的名字
               value -- 默认值
     

             <bean:write name="mycookie" property="value"/>
              取出值
             <bean:write name="mycookie" property="name"/>
              取出名字
     
      Cookie c = new Cookie("loginname","northwind");        
         c.getValue()
         c.getName()

             


    ***     <bean:parameter>访问请求的参数request
          <bean:parameter id="arg1" name="username" value="north"/>
               <bean:write name="arg1"/>
          对应的Java代码
            request.getParameter("username");


    ****  <bean:page> 访问jsp的隐式对象---属性
          session
             getId() -> id
             getCreationTime()  -> creationTime
          application
          request
          response
      所有对象的get方法能访问到的属性 都可以被这个标签访问
        属性的第一个字母变成小写后都可以访问

           <bean:page id="this_session" property="session"/>
          <bean:write name="this_session" property="creationTime"/>
               

       b)访问资源
    ***      <bean:message> 访问applicationResources中的消息
             <bean:message key="hello.user"/> 输出key的值

          <bean:include> 包含资源到一个变量中

      动作 <jsp:include page="testpage1.jsp"/>
          页面运行结果包含进来
       
      等价于下面2句话
             <bean:include id="tp1" page="/testpage1.jsp"/>
             <bean:write name="tp1"/> 输出变量的内容
                                      输出的是页面的内容 

       c) 定义和输出JavaBean
     *****  <bean:define> 定义一个变量
             <bean:define id="aa" value="Hello"/>
                <bean:write name="aa"/>  -> Hello


             <bean:define id="bb" name="empbean" property="ename"/>
      JavaBean:empbean
      属性ename
       变量  String bb = empbean.getEname();

               <bean:write name="bb"/> 得到empbean中属性ename的值


     ***     <bean:write> 显示JavaBean及其属性或变量的内容
             <bean:write name="" property="" scope=""/>
                  name=某个范围中的属性的名字 (对象)
                  property=JavaBean中的属性
                  scope=访问对象的范围

          

    3.logic标签
     a)if else
            if a=b then 等于
                        不等于
                        大于
                        小于
     字符串
                        匹配
                        不匹配
                        空值
                        非空值

     b)循环
          for(int i=0;i<vect.size();i++){
          }                
         对集合的遍历如何做??


    a)
     存在性
      <logic:present/> 是否存在某种变量
          cookie="cookie名字"
          header="request中的header"
          parameter="参数"
         
          name="变量或JavaBean" property=""
          scope="request/session/application"
        如果存在 就输出标签体的内容

      相反的标签
      <logic:notpresent/>
     
     是否为空
       空 - ""或null
       <logic:empty name="变量或JavaBean" property="">
       </logic:empty>

     是否相等
       <logic:equal/>
     大于  >  <logic:greaterThan/>
          >=  <logic:greaterEqual/>
     小于  <  <logic:lessThan/>
           <= <logic:lessEqual/>
     
     匹配 
       <logic:match/>
       <logic:nomatch/> 
         location 表示的是位置
            从开始匹配 start
            从结束匹配 end

    循环
        <logic:iterate>

           <%
              Vector v = new Vector();
              v.add("1");
              v.add("2");
              v.add("3");
              v.add("4");
              request.setAttribute("number",v);
           %> 
       id定义一个变量
       name定义变量的内容
          
           <logic:iterate id="ele" name="number">
               <bean:write name="ele"/>
            </logic:iterate>
     对集合中所有元素的循环访问


     indexId 定义循环计数器变量 i
     offset  开始元素的位置
     length  要输出元素的个数

            <logic:iterate id="ele" indexId="index" name="number" offset="1" length="2">
               <bean:write name="index"/>.<bean:write name="ele"/><br>
             </logic:iterate>


      c) logic转发和重定向

        <logic:forward name="index"/> 对应global-forwards
               转发到index
      <jsp:forward page="index"/>


         <logic:redirect page="aa.jsp"/>
               重定向到aa.jsp
         response.sendRedirect("aa.jsp")     
        
    struts中文乱码问题的解决
     <1>编码转换函数
     <2>过滤器



    Action和jsp的开发其实就是对Struts标签的运用.掌握标签的熟练程度决定了开发效率.初学者往往对某个数据表示或数据获取,束手无策.一个简单的问题浪费一两天时间也就不足为怪了.导致整个开发进度延后.外面的struts书籍介绍标签和数据传输原理都比较简单,下面我对标签技术和数据传输原理,进行全方位多角度的剖析.希望对各位有所帮助.以此为模版,将大大提高开发效率.以sample为机能名称.
    D(j Jtw/c&J①画面上有一text框,显现内容为某一数据表中的某一字段.那我们该如何设置和得到此数据呢?JAVA中文站社区门户D0FYJF
    SampleJsp:JAVA中文站社区门户U!QS2U&s0E0hVT]3]
      < html:text name = "sampleForm" property="name" />
    {D%],L&N c)K1Y oSampleForm.java: // form文件名必须和jsp中标签的name对应JAVA中文站社区门户j+b&YB-k6gn.},m!NX
      String name; // 必须和jsp中该项目的property一样
    'hu tXL4qs Z  public String getName() { return name; }
    +Mg*i9[p4lj z"L/L$d  public void setName(String name) { this.name = name;}
    {;b L;ZY3_E)WY变量和方法名,不可以顺意.变量abcd,那方法名就是setAbcd和getAbcd.注意大小写.JAVA中文站社区门户Ue TEd
    jsp中的项目必然全部在form里面有所表示,当然反过来,form里的项目在jsp中不一定全部表示(可能有辅助动作的对象或验证)JAVA中文站社区门户 zGr,kJ
    SampleAction.java JAVA中文站社区门户d%Sx"ph N8xg0B0W
      public ActionForward start(ActionMapping mapping,
    S9x @.}6^#vW  ActionForm argForm, HttpServletRequest req, HttpServletResponse res)JAVA中文站社区门户.M']ftn:Qn0v:Z:?
      throws Exception {JAVA中文站社区门户&kPF5f)R$K_M&p
            SampleForm form = (SampleForm) argForm;JAVA中文站社区门户 VS| }2u x9P z5F
            String name = ………………other codes for get name from dbJAVA中文站社区门户N1X8?-M0@B)BF
            // set name
    3@F+{-S/C-~}        form.setName(name);JAVA中文站社区门户$l(l(K/Z7?9c\5D%Um
            // now text will show the name
    Uop3fz0zqof  }JAVA中文站社区门户As a1I7r)u,y;a%H
    public ActionForward save(ActionMapping mapping,JAVA中文站社区门户f X?&m7H4i%n
      ActionForm argForm, HttpServletRequest req, HttpServletResponse res)
    #{ SEv+Zhq        throws Exception {JAVA中文站社区门户 AQ O rH*L
            SampleForm form = (SampleForm) argForm;
    ;d2P8rvl1f2`Z2g;c        // get nameJAVA中文站社区门户YB#L,~*?sW Y
            String name = form.getName();
    S c2G c,DB u$j Po%mf        ………………other codes for save nameJAVA中文站社区门户+JyI7EN'P\%x
      }JAVA中文站社区门户8W9NSD'j
    jsp和form对应,action操作form,form其实起了传输数据的作用.这就是struts标签的核心原理.得到数据和设置数据没问题了,剩下的工作也就得心应手了. JAVA中文站社区门户E@+h'U5J xt

    ②再看一个处理标签的方法.画面上是一个明细一览表示(表).表示的是数据表user的相关数据(id,name).
    $~dJBY `AZSampleJsp:
    R$k)?Hy/L  < logic:present name="sampleForm" property="userList" >JAVA中文站社区门户'fz9A/O d
        < logic:iterate id="user" name=" sampleForm " property="userList">JAVA中文站社区门户%kl@5K,d$e B[~)^
          < tr>
    2h t { X:|3UF*Y        < td>< bean:write name="user" property="id" />< /td>JAVA中文站社区门户Y k8k8A Z)} b0cz
            < td>< bean:write name="user" property="name" />< /td>JAVA中文站社区门户6w G6|bM
          < /tr>JAVA中文站社区门户F4l N!O8RY DVL
        < /logic:iterate>
    j}K%FqP:[FH  < /logic:present>

    C@ U`9l.np"Y:m JAVA中文站社区门户;REv(zGUpS#JF,o}

    logic:present是逻辑判断,sampleForm中userList为空(无数据或null),下面的东东不显示.JAVA中文站社区门户b"V1M@%~Nf
    logic:iterate是逻辑循环,userList有几条数据,就循环几次.

    P^`a;FUM!o

    :u6Ki#BvTf< bean:write name="user" property="id" />是lable标签,显示user这个对象(entity)的id属性.或者说显示数据表user中的一条记录中的id这个列.JAVA中文站社区门户7[3QE CC8Jx(l^
    User.java(就是entity,因为和业务密切,高达不开发,切记切记不可顺意修改.遇到设计有问题,QA日本)JAVA中文站社区门户!ziw i H%{3M!~g
        String id;JAVA中文站社区门户-M:L"N2Q'|3u^ L
        public String getId() { return id; }JAVA中文站社区门户+e*Aa| \"p9{
        public void setId(String id) { this.id = id; }
    qvf3OI    String name;JAVA中文站社区门户Qk'CT)P!j
        public String getName () { return name; }JAVA中文站社区门户i _ o'^ h+}z
        public void setName (String name) { this.name = name; }
    9DC w*v f(?看到这,是否觉得面熟啊,好象和FORM一样,但有点不一样,不一样在哪里,看下去后,自己感悟吧.JAVA中文站社区门户Y4v ZYg
    SampleForm.java: JAVA中文站社区门户E y)B?x X
        List userList;JAVA中文站社区门户U e#ft'y(B3M
        public List getUserList () { return userList; }
    9BMO aS&B`    public void setUserList (List userList) { this.userList = userList; }
    Ou.I Ve[Z)fform只要这些,那你会问,id和name,struts如何能得到呢?你不是说过jsp必须和form一样对应吗?不错,一一对应是肯定的. UserList信息已经包含了一切,还需要定义id和name吗?至于struts如何得到数据,那就看下面的action是如何处理的吧.JAVA中文站社区门户6_a.o)x b"q8z"x)h
    SampleAction.java
    7Ab^"t)N/xl-Tpublic ActionForward start(ActionMapping mapping,JAVA中文站社区门户u^+H{|
      ActionForm argForm, HttpServletRequest req, HttpServletResponse res)JAVA中文站社区门户z/\+Y7[&I }
            throws Exception {JAVA中文站社区门户3w"Ty z4Rpr"F
            SampleForm form = (SampleForm) argForm;
    z`7~ F oS*j o%O        ArrayList userList = new ArrayList();
    MdzP;P&SfZMG        User user = new User();
    P U`p"iN`c7^p$I        user.setId(1);JAVA中文站社区门户7u[t,_~ QO2z
            user.setName(“name1”);
    p6G5drI,}y        userList.add(user);JAVA中文站社区门户Z(J:ww7U

    JAVA中文站社区门户a ENe~{

            User user = new User();
    Kq2k5yQ9w!D7YS|        user.setId(2);JAVA中文站社区门户#H/Dja|
            user.setName(“name2”);
    P%F%w Cz`NV X        userList.add(user);JAVA中文站社区门户8T\J'|%f%C
            JAVA中文站社区门户`0r5O-kfs`t
            // set userListJAVA中文站社区门户8`Ip Q"};No]k
            form.setUserList(userList);
    btlJ;zUf        // now table will showJAVA中文站社区门户5~!w#M t{`#[-i
      }
    e1olp'r!Z一切搞定.是不是很简单,但估计你还是有点晕.你还是想问我,id和name到底是如何设置的?
    6Dp!SX#E(e0MtguAction设置了userList就够了,它包含够多的信息了. struts看见了你设置了userList.它就知道了这个list里面都user(entity),useruser(entity)里面不是有很多get,set方法吗?JAVA中文站社区门户 g'|"K*`2d M

    9] `.lIb3{8S再看下下面的东东.
    !aJDU3Vpa-P< logic:iterate id="user" name=" sampleForm " property="userList">
    8e)L!jGU;gO n6a< bean:write name="user" property="id" />
    5xNl.TZJ*Kid=”user”,和name="user" 对应了,明白啥意思吗?.就象循环指明索引一样. property="id"就是要显示的这个索引对应的内容.Struts就是这样来认id和name的.

    v+x3iZ'T!k2t*o~4T JAVA中文站社区门户a7u,x4B_}0C R

    ③接下来,看一个加强版的table例子,在显示的明细一览,每一行前面加一个radio框,让用户选择哪个user.进行删除操作.
    eW.L_$@s hi@SampleJsp:
    -iO"ae^ Z  < logic:present name="sampleForm" property="userList" >
    jQ Rv#f  < logic:iterate id="user" name=" sampleForm " property="userList">
    2m;R;x8mN'D&i:O@  < tr>JAVA中文站社区门户so4V[)U1ku
        < td>JAVA中文站社区门户(\ J)]-T I]$gu-H.]#i
      < html:radio name="sampleForm" property="selectedUserId" value="< %=((jp.co.mhcb.obs.persis.entity.User)pageContext.getAttribute("user ")).getId().toString() %>" />JAVA中文站社区门户)EY dmM aC
       < /td>JAVA中文站社区门户(z#T5?.c4kTn ~7}
       < td>< bean:write name="user" property="id" />< /td>JAVA中文站社区门户h[mxV(D4f
       < td>< bean:write name="user" property="name" />< /td>
    ?9ZF1g4\ K'PA  < /tr>
    ?+h"F#x e*wdj)F< /logic:iterate> JAVA中文站社区门户\[M;B3x"_m
    < /logic:present>JAVA中文站社区门户8Y A c/[Sb

    e!d\/^JsampleForm.java:JAVA中文站社区门户 dmP:[(qU*|H(? U
        String selectedUserId; JAVA中文站社区门户Z%i| i!F;E+p7gCq
        public String getSelectedUserId () { return selectedUserId; }
    0J1J ]qb1r ?y    public void setSelectedUserId(String selectedUserId) {JAVA中文站社区门户H%\C)M-t9[@#J+y
            this.selectedUserId = selectedUserId;JAVA中文站社区门户(bAP)K4C8F)M
        }JAVA中文站社区门户6D Q,F V)O*aXAv
    SampleAction.java JAVA中文站社区门户)ytt)ETx
    public ActionForward delete(ActionMapping mapping,
    ?*ZfUP!z  ActionForm argForm, HttpServletRequest req, HttpServletResponse res)
    4[}K#R6k&J^wKC        throws Exception {
    A8u`(d,y u/B-O        SampleForm form = (SampleForm) argForm;
    cj}o!Q4MM!_0_        String selectedUserId = form.getSelectedUserId();
    ]4N%v"SV%GE        // get user by selected idJAVA中文站社区门户9H-\j{vQ
            User user = getUser(selectedUserId);JAVA中文站社区门户z;U}&a)](H
            // delete user
    e,M$t$k2xf5U        }
    $]cV4SiP1L!wradio框. propertys值对应form里的对象.value值是该行radio对应的user中的id(数据表中user的id是主键),那么当用户选中任何一个radio,struts通过form得到propertys值,就可以得到选中哪个user了,然后进行相应操作.JAVA中文站社区门户e%`N$` lb CM
    设置哪个user被选中,一是通过用户选择,没的说.二,通过程序控制,如果进入初期画面,我要让user.id = ‘3’的radio被选中,只要在初期Action中form.selectedUserId(“3”);一切搞定,就一句话,进入初期画面时, user.id = ‘3’的radio被选中了.JAVA中文站社区门户1Sj*w*fqj

    o/J0{g$nY,{v@注意以下标签JAVA中文站社区门户2c7HFGa:JR`#j3s
    < html:radio name="sampleForm" property="selectedUserId" value="< %= ((jp.co.mhcb.obs.persis.entity.User)pageContext.getAttribute("user ")).getId().toString() %>" />JAVA中文站社区门户z"YH9^rqu
    下面发挥想象一下以下标签啥意思?JAVA中文站社区门户^9w8Y]6t n~5Y T
    < html:radio name="sampleForm" property="selectedUserId" value="< %= ((jp.co.mhcb.obs.persis.entity.User)pageContext.getAttribute("user ")).getObject1().getObject1().getObject2()…………getObjectN().getId().toString() %>" />JAVA中文站社区门户3Nj] c0_k+TE$\!R1_)_
    能看出来什么?JAVA中文站社区门户^9~E*V*R7|
    User包含object1,object2包含object3,….objectN-1包含objectN,objectN有id属性.JAVA中文站社区门户|6D8`g ypB
    看出来了吗?灵活运用,想象一下,各个entity和form,action该如何写?

    (il,eu2zL

    qoG_ I&k④接着介绍一下,checkbox是使用.画面有一排checkbox,如何设置和得到数据呢?先看一个简单点的. JAVA中文站社区门户7h5H4deQb
     < html:checkbox name=" sampleForm" property="chechbox1" value="true" />
    .}YP1_(\;[ < html:checkbox name=" sampleForm" property="chechbox2" value="false" />JAVA中文站社区门户*o Q \&u9K1@Vn
     < html:checkbox name=" sampleForm" property="chechbox3" value="true" />JAVA中文站社区门户CO ^ X(Nyz&Z
    第二个框未选中,其他选中.form里面对应三个String chechbox1,chechbox2, chechbox3;下面来个复杂点的,多选择对话框multiboxJAVA中文站社区门户-r\6H4~ CXL*c['j
    SampleJsp中:
    ]n"lTS*^r,V< logic:iterate name = "sampleForm" id="user" property="userList">
    2f E5RWPB i  < html:multibox property="selectedUsers">
    T4y&Zr7ux(Q    < bean:write name="user" property="id"/>
    h\h[-X lMF Q  < /html:multibox>JAVA中文站社区门户-r-ir MV/^4@"Ot
      < bean:write name="user" property="name"/> JAVA中文站社区门户&f RnHiC0e*Z*CZ
    < /logic:iterate>JAVA中文站社区门户ds T)zS)Huwe^

    8h%g6Gd+t^I`SampleForm中:
    T0R T}E8~    private String userList[] = new String[0];
    a Aah!KP9A    public String[] getUserList () { return userList;}
    L.CDQv&Dw.QX L    public void setUserList(String[]userList) {this.userList = userList;}

    ]YxK\T5X

    l%w"R c-mZAR+F2~    private String selectedUsers[] = new String[0];
    !cS1G}2D J i    public String[] getSelectedUsers () {return selectedUsers;}JAVA中文站社区门户0r C(f[O
        public void setSelectedUsers (String[]selectedUsers) {this.selectedUsers = selectedUsers;}

    KLnKkA8P)^ JAVA中文站社区门户 u9G e"r'Z7@+u9x

    如果我们在初期时在action里对bean赋值:
    7P%z_(q}auserList = { User(”1”,”name1”), User(”2”, ”name2”), User(”3”,”name3”) }
    ek?^,}ZiselectedUsers = {“1”,”3”}
    PH%KG$FV#b%l2z8`*O那画面选中第一第三个选择框.

    gV+K^9lE.z$G JAVA中文站社区门户-LXL7rXS

    用户修改选择框,选择了第二,第三个,那么在action里取bean的值
    Y!Iz0u:n)a/qlG bString selectedItems[] = new String[list.getSize()];
    L#z-^W)GDj0Ik,C UselectedItems = form.getSelectedItems();JAVA中文站社区门户W'J(l&f"wn
    for ( int i = 0 ; i <  selectedItems.length ; ++i ){JAVA中文站社区门户*Ua `d8d
      LOGGER.debug( "selected " + i + ": " + selectedItems[i]);
    U kQH f}
    ;zD4w6c-ESelected 0 : 2 JAVA中文站社区门户A*J9M6Ek#?3m
    Selected 1 : 3JAVA中文站社区门户L Fkt'BW2T
    selectedUsers = {“2”,”3”}

    +P(|#|*\D.CL

    Y b%k4QF0q⑤画面上有一user表,每条数据前面有个button,对应一条记录,如何确定选中那条数据呢??
    A'L^R"US4{QSampleJsp:
    lMbA oh,zZs< logic:iterate id="user" indexId="buttonIndex" name="sampleForm" property="userList">JAVA中文站社区门户A!d h2x x"C/FURZ
    < tr>JAVA中文站社区门户yO @ f vn&\sFD8\|
    < td>
    4t$\Fn1U*nC0F^< html:submit property="button" indexed='false' >JAVA中文站社区门户y [z]#r^'Ip(dA*t
    < bean:message key="label.button.selectUser"/>JAVA中文站社区门户"cT(ae+\D
    < /td>JAVA中文站社区门户k_f@{7A5F'i+GU8w
    < td>< bean:write name="user" property="id" />< /td>JAVA中文站社区门户(fShe,IDe
    < td>< bean:write name="user" property="name" />< /td>JAVA中文站社区门户(P0A`m[ c
    < /tr>JAVA中文站社区门户#}i;N0YMc*l
    < html:hidden name="sampleForm" property="selectUserIndex" value='< %= "" + buttonIndex %>'/>JAVA中文站社区门户,Me!x+} i }v
    < /logic:iterate>

    ;wD*E*\jjs.yC0| JAVA中文站社区门户PsE3O ` g{

    SampleAction.java
    c C IOjh.~e   int index = Integer.parseInt(form.getSelectUserIndex());
    1Eu|1sz6mdn;r3[P   通过一个隐藏变量,得到选中第几条数据,然后就能做相应处理.JAVA中文站社区门户[d2I~s

    ,e&o@aoAB8g⑥上面都是通过form和jsp传输数据的.还有session也能让jsp显示数据.但如果我做为设计者,是不提倡这样做的.为什么就不说了.但日本以前的设计很可能会用到session和jsp传数据.那我就有必要讲一下如何用了?做为高达的设计者还是尽量不要用session和jsp沟通.JAVA中文站社区门户&P T]t!br \*R/D
    有个下拉列表框,里面显示所有用户名称.用session传数据.JAVA中文站社区门户%y N@fF9Ox1s
    SampleJsp:
    1l&p5p@,|< %pageContext.setAttribute("userList",(List) (FwThreadContext
    m5n-]2K@:{,S+i                .getAttribute("AllUser")));JAVA中文站社区门户V;d {+kp^,] t
    %>JAVA中文站社区门户v7V-L0Pd!c:ay
    < html:select property="selectedUser"> JAVA中文站社区门户"FcE(WT&O I
      < html:options collection="userList" property="id" labelProperty="name" />
    PSH$O'X6F< /html:select>JAVA中文站社区门户Y8lE(@C8PR

    JAVA中文站社区门户Q6K lA Y_;db

    SampleForm.java:
    "uH1k%UR'^ Mk6}    String selectedUser;
    A9`r2`-tg ^n| _Form里只要一个selectedUser,表示选择的user. 下拉列表框用session表示.JAVA中文站社区门户)R6zAM*?'}
    在action等地方设置了session的内容,那下拉列表框就能显示内容了.这里session名为AllUser, labelProperty="name"是下拉列表框显示的东东, property="id"是下拉列表框每条数据隐藏的东东.通过property="selectedUser"里得到选中那条数据

    W_ R8p:O*@Pn x

    'c3|C6X{7`3w&d ^S$m< html:text name="sampleForm" property="name"
    t0[l+G5X1g{hvalue="< %= (FwThreadContext.getAttribute("UserName")).toString() %>" />JAVA中文站社区门户Z;zIUBUR
    这里很简单就是把session名为UserName设置到Text框中.得的时候还是通过form中的name得到.

    h,u _C,^$E3QIR9No

    W!NK1s_~)E4?.WZ tF
    #s C6c1p0YyI%SS标签宝典:
    (o)i-ap @1,lable
    xhDioA6N|< bean:write name="sampleForm" property="name" />
    QDa2zv2,text
    8~/U2KV@%YnV< html:text name="sampleForm " property="name" />
    aII4R6`5M3,button
    %e ]vn@{ }zG< html:submit property="button">JAVA中文站社区门户9FQQS]
    < bean:message key="label.button.save" />JAVA中文站社区门户\6_yX}.F'U
    < /html:submit>JAVA中文站社区门户'e6{Et&|
    < html:button property="button" onclick="javascript:openCalendar(date);">
    3I}7r,L)qd0e|< bean:message key="label.button.date" />
    0_e&v!s5EZ< /html:button>
    0W!Z7Y9m]-VO4yC4,select
    .t5BbY(B r!Q"U)j4S< html:select property="selectedUser"> JAVA中文站社区门户pV2VYZo+?;@
      < html:options name="sampleForm" collection="userList" property="id" labelProperty="name" />JAVA中文站社区门户]G*Ru&sE
    < /html:select>
    UYqnK_2U3d5,checkbox,multibox
    ,G-y8Q+wJG  < html:checkbox name="sampleForm" property="chechbox1" value="true" />JAVA中文站社区门户UR%bS kL5w
     
    %[^Le Od-x.cX5nd  < logic:iterate name = "sampleForm" id="user" property="userList">JAVA中文站社区门户9q(t2Fe+fo
        < html:multibox property="selectedUsers">
    2j9`m/Nb@     < bean:write name="user" property="id"/> JAVA中文站社区门户,Q~ V"k?5k6mWz/?2Q
        < /html:multibox>
    (pF;VM/C*MQ    < bean:write name="user" property="name"/>
    `@8e'D:m]`e/{  < /logic:iterate>JAVA中文站社区门户%T!w-`"Q{

    p$c(W:ns^[6, 循环逻辑JAVA中文站社区门户l*Fo2Ts5W
    < logic:present name="sampleForm" property="userList" >
    8wWnFWw^'lk0mp'y< logic:iterate id="user" name=" sampleForm " property="userList">JAVA中文站社区门户`U,]lI`7r ?(]%?
    < tr>
    e"kO6{ I g5N*@e  < td>
    ;Q(N\.\?J+o+? V  < html:radio name="sampleForm" property="selectedUserId" value="< %= ((jp.co.mhcb.obs.persis.entity.User)pageContext.getAttribute("user ")).getId().toString() %>" />JAVA中文站社区门户 pFT8L:M%~9zz
      < /td>
    V/S$G B0Fl6Z:z \  < td>< bean:write name="user" property="id" />< /td>
    k;e"H&B6c\#`  < td>< bean:write name="user" property="name" />< /td>JAVA中文站社区门户IrRj2QCJ/vp
    < /tr>JAVA中文站社区门户6e0U!i~ DQc7}"Q
    < /logic:iterate> JAVA中文站社区门户9n4]]P}
    < /logic:present>JAVA中文站社区门户3bP axI4{

    JAVA中文站社区门户S&l }5x;|*?d HUU

    7,if逻辑
    wP }1VR_< logic:equal name=" sampleForm " property="showAllFlg" value="true" >JAVA中文站社区门户i7lmk s v{$W-R
      < html:submit property="button">JAVA中文站社区门户I9vLI"J
        < bean:message key="label.button.all"/>
    mXO8x_r:_%Q3p  < /html:submit>
    ;wO0j{9v< /logic:equal>JAVA中文站社区门户-f$Ws1ZGa2bO4\1R*|!\:c'~
    < logic:equal name=" sampleForm " property=" showAllFlg " value="false" >JAVA中文站社区门户]:a^@]3g
      < html:submit property="button">JAVA中文站社区门户 ^E+Jgd6F
        < bean:message key="label.button.noall"/>JAVA中文站社区门户s'^nc1fw ^{4N
      < /html:submit>
    /Z&XC H'AH< /logic:equal>  
    vw"M4QxJAVA中文站社区门户:xsk%s!mL_?

  • 相关阅读:
    Python入门11 —— 基本数据类型的操作
    Win10安装7 —— 系统的优化
    Win10安装6 —— 系统的激活
    Win10安装5 —— 系统安装步骤
    Win10安装4 —— 通过BIOS进入PE
    Win10安装2 —— 版本的选择与下载
    Win10安装1 —— 引言与目录
    Win10安装3 —— U盘启动工具安装
    虚拟机 —— VMware Workstation15安装教程
    Python入门10 —— for循环
  • 原文地址:https://www.cnblogs.com/feifeihu/p/2640262.html
Copyright © 2011-2022 走看看