随笔-34  评论-1965  文章-0  trackbacks-0

在上一篇文章《为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节。如果,您看完《为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我。我的E-MAIL:Max.M.Yuan@gmail.com。

在介绍常用标志前,我想先从总体上,对Struts 1.x与Struts 2.0的标志库(Tag Library)作比较。

  Struts 1.x Struts 2.0
分类 将标志库按功能分成HTML、Tiles、Logic和Bean等几部分 严格上来说,没有分类,所有标志都在URI为“/struts-tags”命名空间下,不过,我们可以从功能上将其分为两大类:非UI标志和UI标志
表达式语言(expression languages) 不支持嵌入语言(EL) OGNL、JSTL、Groovy和Velcity
以上表格,纯属个人总结,如有所不足或错误,请不吝指正

好了,我要开始介绍“常用”(这里所谓的“常用”,是指在已往工作中使用Struts里经常用到的)的标志了。

要在JSP中使用Struts 2.0标志,先要指明标志的引入。通过在JSP的代码的顶部加入以下代码可以做到这点。
<%@taglib prefix="s" uri="/struts-tags" %>
  1. 非UI标志
    • if、elseif和else

      描述:
      执行基本的条件流转。

      参数:

      名称必需默认类型描述备注
      testBoolean决定标志里内容是否显示的表达式else标志没有这个参数
      idObject/String用来标识元素的id。在UI和表单中为HTML的id属性

      例子:

      <%@ page contentType="text/html; charset=UTF-8" %>
      <%@ taglib prefix="s" uri="/struts-tags" %>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
          
      <head>
              
      <title>Condition Flow</title>
          
      </head>
          
      <body>
              
      <h3>Condition Flow</h3>            
              
      <!--
                  这里有点小技巧:
                  本来可以用#parameters.name[0]来获得,请求中name的值。但是,在我实现include例子时,
                  无论我用param标志给name赋任何值,#parameters里面不会含有任何值,所以#parameters.name也为空值。
                  
                  其原因为:
                  当使用include标志时,被包含的页面(included)里#parameters拿到的是包含页面里的请求参数。
                  
                  因此,这里必须手工调用request.getParameter("name")。
              
      -->
              
      <s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />
              
      <s:if test="#name == 'Max'">
                  Max's file here
              
      </s:if>
              
      <s:elseif test="#name == 'Scott'">
                  Scott's file here
              
      </s:elseif>
              
      <s:else>
                  Other's file here
              
      </s:else>        
          
      </body>
      </html>
      例1 condition.jsp

    • iterator

      描述:
      用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)。

      参数:

      名称必需默认类型描述
      statusString如果设置此参数,一个IteratorStatus的实例将会压入每个遍历的堆栈
      valueObject/String要遍历的可枚举的(iteratable)数据源,或者将放入新列表(List)的对象
      idObject/String用来标识元素的id。在UI和表单中为HTML的id属性

      例子:

      <%@ page contentType="text/html; charset=UTF-8" %>
      <%@ page import="java.util.List" %>
      <%@ page import="java.util.ArrayList" %>
      <%@ taglib prefix="s" uri="/struts-tags" %>

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <%
          List list 
      = new ArrayList();
          list.add(
      "Max");
          list.add(
      "Scott");
          list.add(
      "Jeffry");
          list.add(
      "Joe");
          list.add(
      "Kelvin");
          request.setAttribute(
      "names", list);
      %>
      <html>
          
      <head>
              
      <title>Iterator</title>
          
      </head>
          
      <body>
              
      <h3>Names: </h3>
              
      <!-- 
                  1、此处的空property元素用于获得当前iterator的值 
                  2、status被设成stuts,在iterator的里面就可以通过#stuts取得IteratorStatus的对象。IteratorStatus类包含当前序号信息,如是否第一个或最后一个,是否为奇数序号。这些信息在我们做格式化的时候,显得非常有用。
              
      -->
              
      <ol>
                  
      <s:iterator value="#request.names" status="stuts">                
                      
      <s:if test="#stuts.odd == true">
                          
      <li>White <s:property /></li>
                      
      </s:if>
                      
      <s:else>
                          
      <li style="background-color:gray"><s:property /></li>
                      
      </s:else>
                  
      </s:iterator>
              
      </ol>
          
      </body>
      </html>
      例2 iterator.jsp

    • i18n

      描述:
      加载资源包到值堆栈。它可以允许text标志访问任何资源包的信息,而不只当前action相关联的资源包。

      参数:

      名称必需默认类型描述
      valueObject/String资源包的类路径(如com.xxxx.resources.AppMsg)
      idObject/String用来标识元素的id。在UI和表单中为HTML的id属性

      例子:

      HelloWorld=Hello Wrold!
      例3 classes\ ApplicationMessages.properties

      <%@ page contentType="text/html; charset=UTF-8" %>
      <%@ taglib prefix="s" uri="/struts-tags" %>

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
          
      <head>
              
      <title>Internationization</title>
          
      </head>
          
      <body>
              
      <h3>
                  
      <s:i18n name="ApplicationMessages">
                      
      <s:text name="HelloWorld" />
                  
      </s:i18n>
              
      </h3>
          
      </body>
      </html>
      例3 i18n.jsp

    • include

      描述:
      包含一个servlet的输出(servlet或jsp的页面)。

      参数:

      名称必需默认类型描述
      valueString要包含的jsp或servlet
      idObject/String用来标识元素的id。在UI和表单中为HTML的id属性

      例子:

      <%@ page contentType="text/html; charset=UTF-8" %>
      <%@ taglib prefix="s" uri="/struts-tags" %>

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
          
      <head>
              
      <title>Iterator</title>
          
      </head>
          
      <body>
              
      <h3>Interator Page</h3>
              
      <s:include value="/condition.jsp">
                  
      <s:param name="name">Max</s:param>
              
      </s:include>
              
      <h3>i18n</h3>
              
      <s:include value="/i18n.jsp" />
          
      </body>
      </html>
      例4 include.jsp

    • param

      描述:
      为其他标签提供参数,比如include标签和bean标签. 参数的name属性是可选的,如果提供,会调用Component的方法addParameter(String, Object), 如果不提供,则外层嵌套标签必须实现UnnamedParametric接口(如TextTag)。

      value的提供有两种方式,通过value属性或者标签中间的text,不同之处我们看一下例子:

      <param name="color">blue</param><!-- (A) -->

      <param name="color" value="blue"/><!-- (B) -->
      (A)参数值会以String的格式放入statck.
      (B)该值会以java.lang.Object的格式放入statck.

      参数:

      名称必需默认类型描述
      nameString参数名
      valueStringvalue表达式
      idObject/String用来标识元素的id。在UI和表单中为HTML的id属性

      例子:
      请参考例4。

    • set

      描述:
      set标签赋予变量一个特定范围内的值。当希望给一个变量赋一个复杂的表达式,每次访问该变量而不是复杂的表达式时用到。其在两种情况下非常有用: 复杂的表达式很耗时 (性能提升) 或者很难理解 (代码可读性提高)。

      参数:

      名称必需默认类型描述
      nameString变量名字
      scopeString变量作用域,可以为application, session, request, page, 或action.
      valueObject/String将会赋给变量的值
      idObject/String用来标识元素的id。在UI和表单中为HTML的id属性

      例子:
      请参考例1。

    • text

      描述:
      支持国际化信息的标签。国际化信息必须放在一个和当前action同名的resource bundle中,如果没有找到相应message,tag body将被当作默认message,如果没有tag body,message的name会被作为默认message。

      参数:

      名称必需默认类型描述
      nameString资源属性的名字
      idObject/String用来标识元素的id。在UI和表单中为HTML的id属性

      例子:
      请参考例3。

    • url

      描述:
      该标签用于创建url,可以通过"param"标签提供request参数。

      当includeParams的值时'all'或者'get', param标签中定义的参数将有优先权,也就是说其会覆盖其他同名参数的值。

      参数: 略

      例子:

      <%@ page contentType="text/html; charset=UTF-8" %>
      <%@ taglib prefix="s" uri="/struts-tags" %>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
          
      <head>
              
      <title>URL</title>
          
      </head>
          
      <body>
              
      <h3>URL</h3>            
              
      <href='<s:url value="/i18n.jsp" />'>i18n</a><br />
              
      <s:url id="url" value="/condition.jsp">
                  
      <s:param name="name">Max</s:param>
              
      </s:url>        
              
      <s:a href="%{url}">if\elseif\else</s:a>
          
      </body>
      </html>
      例5 url.jsp

    • property

      描述:
      得到'value'的属性,如果value没提供,默认为堆栈顶端的元素。

      参数:

      名称必需默认类型描述
      defaultString如果属性是null则显示的default值
      escapetrueBooelean是否escape HTML
      value栈顶Object要显示的值
      idObject/String用来标识元素的id。在UI和表单中为HTML的id属性

      例子:
      请参考例2。

  2. UI标志

    UI标志又可以分为表单UI和非表单UI两部分。表单UI部分基本与Struts 1.x相同,都是对HTML表单元素的包装。不过,Struts 2.0加了几个我们经常在项目中用到的控件如:datepicker、doubleselect、timepicker、optiontransferselect等。因为这些标志很多都经常用到,而且参数也很多,要在一篇文章详细说明并非易事。

    需要深入了解这些标志的朋友,可以到以下查看以下网址:
    http://wiki.javascud.org/display/ww2cndoc/Tags WebWork2文档中文化计划(中文)
    http://cwiki.apache.org/WW/tag-reference.html Tag Developers Guide(英文)
    本文有相当的内容也来自这两处。

    在此,我虽然不能够详细讲述这些标志,但是可以与大家分享一个来Struts 2.0 Show Case一个例子。

    /*
     * $Id: UITagExample.java 420385 2006-07-10 00:57:05Z mrdon $
     *
     * Copyright 2006 The Apache Software Foundation.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      
    http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     
    */

    package org.apache.struts2.showcase;

    import org.apache.struts2.ServletActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.Validateable;
    import com.opensymphony.xwork2.util.OgnlValueStack;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.io.File;

    /**
     
    */

    public class UITagExample extends ActionSupport implements Validateable {
        
        
    private static final long serialVersionUID = -94044809860988047L;        
        String name;
        Date birthday;
        String bio;
        String favoriteColor;
        List friends;
        
    boolean legalAge;
        String state;
        String region;
        File picture;
        String pictureContentType;
        String pictureFileName;
        String favouriteLanguage;
        String favouriteVehicalType 
    = "MotorcycleKey";
        String favouriteVehicalSpecific 
    = "YamahaKey";
        
        List leftSideCartoonCharacters;
        List rightSideCartoonCharacters;
        
        List favouriteLanguages 
    = new ArrayList();
        List vehicalTypeList 
    = new ArrayList();
        Map vehicalSpecificMap 
    = new HashMap();
        
        String thoughts;
        
        
    public UITagExample() {
            favouriteLanguages.add(
    new Language("EnglishKey""English Language"));
            favouriteLanguages.add(
    new Language("FrenchKey""French Language"));
            favouriteLanguages.add(
    new Language("SpanishKey""Spanish Language"));
            
            VehicalType car 
    = new VehicalType("CarKey""Car");
            VehicalType motorcycle 
    = new VehicalType("MotorcycleKey""Motorcycle");
            vehicalTypeList.add(car);
            vehicalTypeList.add(motorcycle);
            
            List cars 
    = new ArrayList();
            cars.add(
    new VehicalSpecific("MercedesKey""Mercedes"));
            cars.add(
    new VehicalSpecific("HondaKey""Honda"));
            cars.add(
    new VehicalSpecific("FordKey""Ford"));
            
            List motorcycles 
    = new ArrayList();
            motorcycles.add(
    new VehicalSpecific("SuzukiKey""Suzuki"));
            motorcycles.add(
    new VehicalSpecific("YamahaKey""Yamaha"));
            
            vehicalSpecificMap.put(car, cars);
            vehicalSpecificMap.put(motorcycle, motorcycles);
        }
       
            
        
    public List getLeftSideCartoonCharacters() {
            
    return leftSideCartoonCharacters;
        }

        
    public void setLeftSideCartoonCharacters(List leftSideCartoonCharacters) {
            
    this.leftSideCartoonCharacters = leftSideCartoonCharacters;
        }

            
        
    public List getRightSideCartoonCharacters() {
            
    return rightSideCartoonCharacters;
        }

        
    public void setRightSideCartoonCharacters(List rightSideCartoonCharacters) {
            
    this.rightSideCartoonCharacters = rightSideCartoonCharacters;
        }

            
        
    public String getFavouriteVehicalType() {
            
    return favouriteVehicalType;
        }

        
        
    public void setFavouriteVehicalType(String favouriteVehicalType) {
            
    this.favouriteVehicalType = favouriteVehicalType;
        }

        
        
    public String getFavouriteVehicalSpecific() {
            
    return favouriteVehicalSpecific;
        }

        
        
    public void setFavouriteVehicalSpecific(String favouriteVehicalSpecific) {
            
    this.favouriteVehicalSpecific = favouriteVehicalSpecific;
        }

        
        
    public List getVehicalTypeList() {
            
    return vehicalTypeList;
        }

        
        
    public List getVehicalSpecificList() {
            OgnlValueStack stack 
    = ServletActionContext.getValueStack(ServletActionContext.getRequest());
            Object vehicalType 
    = stack.findValue("top");
            
    if (vehicalType != null && vehicalType instanceof VehicalType) {
                List l 
    = (List) vehicalSpecificMap.get(vehicalType);
                
    return l;
            }

            
    return Collections.EMPTY_LIST;
        }

        
        
    public List getFavouriteLanguages() {
            
    return favouriteLanguages;
        }


        
    public String execute() throws Exception {
            
    return SUCCESS;
        }


        
    /* Getters and Setters */
               
        
    public String doSubmit() {
            
    return SUCCESS;
        }
           
        
        
    // === inner class 
        public static class Language {
            String description;
            String key;
            
            
    public Language(String key, String description) {
                
    this.key = key;
                
    this.description = description;
            }

            
            
    public String getKey() 
                
    return key; 
            }

            
    public String getDescription() 
                
    return description; 
            }

            
        }
        
        
        
    public static class VehicalType {
            String key;
            String description;
            
    public VehicalType(String key, String description) {
                
    this.key = key;
                
    this.description = description;
            }

            
            
    public String getKey() return this.key; }
            
    public String getDescription() return this.description; }
            
            
    public boolean equals(Object obj) {
                
    if (! (obj instanceof VehicalType)) 
                    
    return false;
                }

                
    else {
                    
    return key.equals(((VehicalType)obj).getKey());
                }

            }

            
            
    public int hashCode() {
                
    return key.hashCode();
            }

        }
        
        
        
    public static class VehicalSpecific {
            String key; 
            String description;
            
    public VehicalSpecific(String key, String description) {
                
    this.key = key;
                
    this.description = description;
            }

            
            
    public String getKey() return this.key; }
            
    public String getDescription() return this.description; }
            
            
    public boolean equals(Object obj) {
                
    if (! (obj instanceof VehicalSpecific)) {
                    
    return false;
                }

                
    else {
                    
    return key.equals(((VehicalSpecific)obj).getKey());
                }

            }

            
            
    public int hashCode() {
                
    return key.hashCode();
            }

        }

    }
    例6 org.apache.struts2.showcase.UITagExample.java

    <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
    <head>
        
    <title>UI Tags Example</title>
        
    <s:head/>
    </head>
    <body>

    <s:actionerror/>
    <s:actionmessage/>
    <s:fielderror />

    <s:form action="exampleSubmit" method="post" enctype="multipart/form-data" tooltipConfig="#{'jsTooltipEnabled':'true'}">
        
    <s:textfield 
                
    label="Name" 
                name
    ="name"
                tooltip
    ="Enter your Name here" />

        
    <s:datepicker
                
    tooltip="Select Your Birthday"
                label
    ="Birthday"
                name
    ="birthday" />

        
    <s:textarea
                
    tooltip="Enter your Biography"
                label
    ="Biograph"
                name
    ="bio"
                cols
    ="20"
                rows
    ="3"/>

        
    <s:select
                
    tooltip="Choose Your Favourite Color"
                label
    ="Favorite Color"
                list
    ="{'Red', 'Blue', 'Green'}"
                name
    ="favoriteColor"
                emptyOption
    ="true"
                headerKey
    ="None"
                headerValue
    ="None"/>

        
    <s:select
                
    tooltip="Choose Your Favourite Language"
                label
    ="Favourite Language"
                list
    ="favouriteLanguages"
                name
    ="favouriteLanguage"
                listKey
    ="key"
                listValue
    ="description"
                emptyOption
    ="true"
                headerKey
    ="None"
                headerValue
    ="None"/>

        
    <s:checkboxlist
                
    tooltip="Choose your Friends"
                label
    ="Friends"
                list
    ="{'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}"
                name
    ="friends"/>

        
    <s:checkbox
                
    tooltip="Confirmed that your are Over 18"
                label
    ="Age 18+"
                name
    ="legalAge"/>

        
    <s:doubleselect
                
    tooltip="Choose Your State"
                label
    ="State"
                name
    ="region" list="{'North', 'South'}"
                value
    ="'South'"
                doubleValue
    ="'Florida'"
                doubleList
    ="top == 'North' ? {'Oregon', 'Washington'} : {'Texas', 'Florida'}" 
                doubleName
    ="state"
                headerKey
    ="-1"
                headerValue
    ="---------- Please Select ----------"
                emptyOption
    ="true" />

        
    <s:doubleselect
                
    tooltip="Choose your Vehical"
                label
    ="Favourite Vehical"
                name
    ="favouriteVehicalType"
                list
    ="vehicalTypeList"
                listKey
    ="key"
                listValue
    ="description"
                value
    ="'MotorcycleKey'"
                doubleValue
    ="'YamahaKey'"
                doubleList
    ="vehicalSpecificList"
                doubleListKey
    ="key"
                doubleListValue
    ="description"
                doubleName
    ="favouriteVehicalSpecific" headerKey="-1"
                headerValue
    ="---------- Please Select ----------"
                emptyOption
    ="true" />

        
    <s:file
                
    tooltip="Upload Your Picture"
                label
    ="Picture" 
                name
    ="picture" />
                
        
    <s:optiontransferselect
                
    tooltip="Select Your Favourite Cartoon Characters"
                label
    ="Favourite Cartoons Characters"
                name
    ="leftSideCartoonCharacters" 
                leftTitle
    ="Left Title"
                rightTitle
    ="Right Title"
                list
    ="{'Popeye', 'He-Man', 'Spiderman'}" 
                multiple
    ="true"
                headerKey
    ="headerKey"
                headerValue
    ="--- Please Select ---"
                emptyOption
    ="true"
                doubleList
    ="{'Superman', 'Mickey Mouse', 'Donald Duck'}" 
                doubleName
    ="rightSideCartoonCharacters"
                doubleHeaderKey
    ="doubleHeaderKey"
                doubleHeaderValue
    ="--- Please Select ---" 
                doubleEmptyOption
    ="true"
                doubleMultiple
    ="true" />
        
        
    <s:textarea
                
    label="Your Thougths"
                name
    ="thoughts" 
                tooltip
    ="Enter your thoughts here" />
                
        
    <s:submit onclick="alert('aaaa');" />
        
    <s:reset onclick="alert('bbbb');" />
    </s:form>
        
    </body>
    </html>
    例6 example.jsp

    <action name="example" class="org.apache.struts2.showcase.UITagExample">
        
    <result>example.jsp</result>
        
    <result name="input">example.jsp</result>
    </action>
    例6 struts.xml代码片段

posted on 2006-10-18 12:02 Max 阅读(85796) 评论(160)  编辑  收藏 所属分类: Struts 2.0系列
评论共2页: 1 2 下一页 

评论:
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-06-19 14:55 | 任遨游
问题解决:
jsp中加这句
<html xmlns="http://www.w3.org/1999/xhtml">

去掉这句
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-06-27 11:57 | jpma
@任遨游
不行啊,我按你的办法去处理,没有作用啊。
其它人还有办法吗?  回复  更多评论
  
# re: 常用的Struts 2.0的標誌(Tag)介紹 2007-06-27 16:58 | Jimmy
請問在Tag裡
可以放入JavaScriprt嗎?
好像不行耶~  回复  更多评论
  
# re: 常用的Struts 2.0的標誌(Tag)介紹 2007-06-27 17:04 | Jimmy
@Jimmy
我指的Tag是Struts2的Tag
在編譯時會過不去
  回复  更多评论
  
# re: 常用的Struts 2.0的標誌(Tag)介紹 2007-06-27 17:36 | Jimmy
@Jimmy
舉例來說
想在<s:select ...
加入onChange()
但卻不行
有什麼特別方法或解決之道嗎????
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-06-29 00:41 | Max
@Jimmy
关于<s:doubleselect />你可以参考http://www.blogjava.net/max/archive/2007/05/18/118442.html
而至于<s:select />的onchange属性可以正常工作的,可能你什么地方弄错了。  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-07-08 22:26 | pp
Expression parameters.formName is undefined ...
我之前犯這錯是因為..
忘了把 doubleselect 包在具有 action 的 <form> 內..
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-07-11 11:08 | jessen
看了之后还是不是很明白,很多都不能在页面上实现
我有点困惑!!!  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-07-25 18:32 | 明人
@jessen
如果困惑,那说明,你还未得其法门,又或者努力不够
坚持多看,学习的过程就是反复的过程,当你突然顿悟的时候,也就一通百通了
当然,如果悟性太低,那看一遍和看100遍的效果其实是一样的,所以嘛,做程序员仅仅靠辛劳是不够的,关键还是天赋。
唉。。。。  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-08-01 17:26 | 地带
支持!!!!  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-08-06 16:56 | 小风
在struts.xml文件中如果按这样的配置方式
<package name="demo1" extends="struts-default">
<action name="HelloWorld" class="demo1.HelloWorld">
<result>/demo1/HelloWorld.jsp</result>
</action>
</package>
<package name="demo2" extends="struts-default">
<action name="HelloWorld" class="demo2.HelloWorld">
<result>/demo1/HelloWorld.jsp</result>
</action>
</package>

在demo1/HelloWord.jsp文件里如果<s:form action="HelloWorld"> 那么在生成的页面的源文件会发现 他始终找的是第一个HelloWord.Action 就是Demo1里面的 我demo2/HelloWord.jsp文件里的<s:form action="HelloWorld"> 找的也是demo1/HelloWord.action

如何解决在同一个struts配置文件中包名不同 actian name相同的情况 (改名除外)  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-08-06 16:58 | 小风
更正下 上面的<package name="demo2"> 里面的rsult 里的应该是/demo2/HelloWorld.jsp不是demo1 打错了  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-08-08 09:39 | Max
@小风
你可以试一下加上不同的namespace  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-08-10 13:19 | andvar
例1 condition.jsp
<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" /> 中可以使用value=#request.parameters.name[0]
就好,在include.jsp测试通过。

文章写的不错,希望能写出更多更好的文章  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-08-14 14:51 | I don't konw me
Thanks very much!
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-08-16 20:05 | Elven
讲得太好了,你为什么不去出书呢?
如果你去出书,会有更多人受益的!  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-08-28 17:39 |
问个刚遇到的技术难题,就是如何使用标签遍历一个二维数组???  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-08-29 16:22 | tf
请问我在运行Struts 2.0 Show Case这个例子时submit提交按扭怎么在界面中显示不出来呢?  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-08-29 16:50 | tf
就是运行后界面上的文本框,下拉列表啊什么的都有显示,但是就是看不到有提交的按扭  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-08-30 09:37 | tf
VehicalType car = new VehicalType("CarKey", "Car");
VehicalType motorcycle = new VehicalType("MotorcycleKey", "Motorcycle");
vehicalTypeList.add(car);
vehicalTypeList.add(motorcycle);

List cars = new ArrayList();
cars.add(new VehicalSpecific("MercedesKey", "Mercedes"));
cars.add(new VehicalSpecific("HondaKey", "Honda"));
cars.add(new VehicalSpecific("FordKey", "Ford"));

List motorcycles = new ArrayList();
motorcycles.add(new VehicalSpecific("SuzukiKey", "Suzuki"));
motorcycles.add(new VehicalSpecific("YamahaKey", "Yamaha"));

vehicalSpecificMap.put(car, cars);
vehicalSpecificMap.put(motorcycle, motorcycles);
VehicalType和vehicalTypeList类型和VehicalSpecific(),vehicalSpecificMap理解不来.  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-09-01 16:25 | gdm
让初学者真的受益匪浅,辛苦了!  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-09-04 12:02 | kzy
我想请教高手一问题:
<%List<String> list=new ArrayList<String>();
pageContext.setAttribute("names", list);
list.add("as");
list.add("ghgt");
%>
<s:iterator value="%{#pageContext.names}" status="stuts/>
为什么获得不了值呢  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-09-05 00:34 | Max
@kzy
没有Context没有pageContext属性,所以你用#attr。  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-09-05 08:21 | kzy
谢谢max的回答
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍[未登录] 2007-09-07 12:09 | a
request.setAttribute("names", list);
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-09-07 14:38 | kzy
@a
我知道request session 和application都能显示出结果来。但是就 pagecontext显示不出来我想问问为什么  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-09-10 15:05 | yanzi
<s:datetimepicker id="starttime" name="idpServiceDTO.starttime" displayFormat="yyyy-MM-dd" theme="simple" /> 请求帮助,急! 我想用<script>在页面提示用户必须选择一个时间,不选择就弹出一个alert.  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-09-21 09:19 | dyw31415926
我想问一下关于<s:select> 标签的问题,
1。怎么让select预先选择指定的项(问题见下面的例子)
2。在jsp中带有<s:select>在Action类中怎么取得显示的text(我想将value和text都接收到)
===================================================
下面的也测试通过 取到的值是03(我要是想同时取到'03论坛社区',我该怎么做?) 就是'03':'03论坛社区'这一项
<s:select name="webtype1"
list="#{'01':'01个人博客','03':'03论坛社区','05':'05企业网站'}"
label="网站类型" headerKey="-1" headerValue="Select Month" value="#{'03'}" required="true"></s:select>
========================================================
下面的例子测试没有通过,没有达到目的,也就是说,难道对key:value有什么显示吗?为什么'03'可以取到,'3' 不可以取到,
默认选中的是'-1' :Select Month" 这一项,而不是我们想要的'3':'3论坛社区'这一项
<s:select name="webtype1"
list="#{'01':'01个人博客','3':'3论坛社区','05':'05企业网站'}" label="网站类型"
headerKey="-1" headerValue="Select Month" value="#{'3'}"
required="true"></s:select>
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-09-24 17:39 | david007
请问max大哥:
在struts2中,怎么实现类似
<a target="_blank" href="http://www.baidu.com">baidu</a>(好像在ie中可以,在 firefox 中就不可以了)
这样的点击时在一个新的窗口的效果
<s:a href="***"> </s:a>会在本页打开,有时需要在新窗口打开的  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-09-24 21:14 | dyw31415926
本人决定解散一个群,重组,struts2.0专用讨论QQ群,群号7844777,虚位以待各路高手!  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-09-28 10:09 | glacier3
辛苦了!
很感谢  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍[未登录] 2007-09-29 16:41 | 台风过境
报错:No tag "datepicker" defined in tag library imported with prefix "s"

其他标签都能找到,为什么datepicker找不到呢?我好像没拼写错吧  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-11-09 23:41 | yuml
你好,我的怎么运行这章的例子怎么都不成功,很郁闷。condition.jsp出现According to TLD or attribute directive in tag file, attribute value does not accept any expressions
还有iterator.jsp出错,运行不了。那个i18n就显示HelloWorld,键值变了还是显示这个。是不是版本问题,我用的是struts-2.0.11
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-11-10 23:55 | yuml
现在例子几乎都可以运行了,就是那个include.jsp不能显示Max,只是显示other‘s file is here。我用了你的两种方法都不可以
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-11-13 22:08 | palmely
我想问一下,为什么我的datetimepicker上的中文显示是乱码?我已经在
struts.properties中设置struts.locale=zh_CN,请MAX指导一下!  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-11-13 22:12 | palmely
@台风过境

在struts2中使用datetimepicker.
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-11-24 12:12 | 游客
struts2怎么实现三级联动啊  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍[未登录] 2007-11-29 16:53 | peter
如何实现二级联动并连接到数据库中  回复  更多评论
  
# 类型不匹配:不能从 ValueStack 转换为 OgnlValueStack 2007-12-06 22:51 | jaja
public List getVehicalSpecificList() {
OgnlValueStack stack = ServletActionContext.getValueStack(ServletActionContext.getRequest());
请问这里为何问题,谢谢  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-12-11 15:33 | 不错
不错  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2007-12-17 14:58 | saturn
你能不能帮我讲下#{},${},%{}的功能及其区别???  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍[未登录] 2007-12-26 00:28 | jeffrey
你好!我在运行include.jsp例子的时候出现如下的错误,请问是什么原因呢?
警告: Exception thrown during include of /condition.jsp?name=max
org.apache.jasper.JasperException: /condition.jsp(11,0) According to TLD or attribute directive in tag file, attribute value does not accept any expressions  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-01-12 00:47 | bizairshop
逻辑方面的 用jstl还是struts库更好呢?
凯讯航空 http://www.kxjp.net  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-01-18 14:12 | 0000ps
一般一个jsp都会绑定有一个action (struts2) 就像struts1中绑定了一个ActionForm,
所以在condition.jsp中,
<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />
<s:if test="#name == 'Max'">


这段判断直接可以写成
<s:if test="name == 'Max'">
.....




  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-01-25 15:53 | librad
@customer
form里面加上 name="form1"   回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-01-25 15:55 | librad
@吴
form里面加上 name="form1" 试一试  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-01-25 16:24 | youke
楼主真的是辛苦了,我想问一个问题,就是我们实际的项目中的页面显示一般是由美工来完成的,所以在表单元素上可能经常会加上css等,请为一下这对标签的使用有影响吗?  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-01-25 16:28 | youke
现在还没有用过struts2.0的版本,以前都是用1.x的,感觉1.x版本的标签有比较大的局限性,在显示复杂的页面或表格时就力不从心,比如说让标签控制每3列就自动换行好像就不能用纯标签实现,不晓得2.0在这方面有没有改进?  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-02-16 11:24 | maoyaohuang
Max你好,按你所说的进行配置,前面其他的都可以,可是到了condition.jsp时,出错了,说Exception thrown during include of /condition.jsp?name=max
org.apache.jasper.JasperException: /condition.jsp(11,0) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
找了很多地方都得不到答案,希望你能给点建议。。
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-02-21 14:30 | me
按你所说的进行配置,前面其他的都可以,可是到了condition.jsp时,出错了,说Exception thrown during include of /condition.jsp?name=max
org.apache.jasper.JasperException: /condition.jsp(11,0) According to TLD or attribute directive in tag file, attribute value does not accept any expressions  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-02-21 14:41 | laibin
感谢!  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-03-14 01:47 | kari
MAX你好,想问一下关于<s:iterator></s:iterator>这个标签的问题:
数据库中有表aclass(大类)和bclass(小类)
我用 <s:iterator value="aclasses" status="aclass"><s:property value="name"/><s:iterator value="aclass.bclasses" status="bclass"><s:property value="name"/></s:iterator></s:iterator>
只能输出外层内层完全没有反映。以前用jstl的时候可以啊。请问原因?谢谢,我用的是hibernate框架  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-03-21 22:34 | 安定法
楼猪是带比  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-03-21 22:47 | 楼主SB
当你使用struts 2 tags时,如果使用代码:
<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />
或者
<s:set name="name" value="${param.name}" />
都会发生下列错误:
According to TLD or attribute directive in tag file, attribute value does not accept any expressions


而得使用:
<s:set name="name" value="#parameters.name[0]" />
才行

=============================
楼主虽然写了一篇不错的文章,但是能否回答一下问题啊?
拽个鸟啊,DB

引用自:
http://blog.csdn.net/totogogo/archive/2008/03/07/2157448.aspx  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-03-25 22:46 | visitor
@yuml
http://blog.csdn.net/totogogo/archive/2008/03/07/2157448.aspx

找了半天,原来是 Struts 2从 version 2.0.11开始已经不支持struts tag与JSP EL表达式混合使用了。
难怪前面的朋友没有这个问题。。  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍[未登录] 2008-05-20 16:57 | Alex
java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]

请教MAX,在点击上面例子中的提交按钮显示这个错,这是为什么?  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-06-13 09:21 | 合乎
@yuml
是版本问题。  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-06-26 17:15 | hoversong
@visitor
对,不能用struts2-core-2.0.11.jar,而应该用struts2-core-2.0.9.jar。否则condition.jsp
中的<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />会出错。取不到值。  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-07-15 14:30 | sunkeli
你好,我想请问一下iterator的嵌套用法,第二层的value值 "#request.names"中的names值 我要用第一层中的<s:property value="ID">来代替 请问怎么实现 我的邮箱是sunkeli1985@126.com  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍[未登录] 2008-07-16 15:47 | hunter
@visitor
謝謝了,正學struts2.0
用的是struts2-core-2.0.11.2.jar
難怪會出錯~  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-07-25 09:57 | jzui
LZ你好,我是struts2.0初学者,之前有接触过struts1.0,不过接触的也不多,我按照你上面给的例子进行学习,遇到了很多问题,一些我已经解决,但是有一个问题一直解决不了,希望问的这个菜鸟问题可以得到LZ的解答。
在UI标志这个例子中,jsp中是这样的form action="exampleSubmit",在struts.xml中是<action name="example",form中的action应该是从struts.xml中取的吧?为什么两者不对应的?我是自己讲两者对应了。但是运行时还是出了和doboy一样的错,虽然你已经解答了他的问题,但是我还是解决不了,所以只好请教你了,我报的错误是
StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
tag 'select', field 'list', name 'favouriteLanguage': The requested list key 'favouriteLanguages' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
凡是需要从类里面取的list都显示不出来,并且报这个错误,我是完全按照你的代码的,你说可能取得的对象不是列表,但是我觉得是一个列表阿,不知道你理解了我的问题没,期待你的答复,谢谢了。  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-07-25 10:59 | tinsoldier
从url.jsp连接condition.jsp时总是抱错,是和缘故?
报错内容:
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /condition.jsp(10,8) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:952)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:706)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1442)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2222)
org.apache.jasper.compiler.Node$Root.accept(Node.java:457)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
org.apache.jasper.compiler.Validator.validate(Validator.java:1484)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:167)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:296)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:452)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.26 logs.

  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-07-31 18:27 | 小小米
我想问一下,现在我从后台传了个Map到页面,因为提交只把ListKey中的值提交上去,我想把ListKey和ListValue中的值一起传到Action中去怎么办。  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-08-01 12:23 |
哈哈,不错哦.  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-08-17 11:39 | ∪∩BUG
很奇怪.
我的struts2.0.11没有datepicker这个标记..
运行这个最后一个例子就会有这个错误
/example.jsp(20,4) No tag "datepicker" defined in tag library imported with prefix "s"

有谁知道是什么原因???  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-09-04 15:05 | walkes
@tinsoldier
我也遇到你一样的问题呃
你得问题解决了吧
接着回答一下啊  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-09-11 16:58 | ENZO
if、elseif和else那节,直接用
<s:set name="name" value="#request.name"></s:set>
就能拿到页面里的请求参数值呀,这不简单多了呵?
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-09-24 09:59 | John Xu
@jzui
tag 'select', field 'list', name 'favouriteLanguage': The requested list key 'favouriteLanguages' could not be resolved as a collection/array/map/enumeration/iterator type.

这个messge是因为没有运行UITagExample action, 'favouriteLanguages' 没被初始化  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2008-09-25 17:06 | ccue
不能运行代码,也许是版本问题。老大出来解决下吗  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍[未登录] 2008-12-08 15:45 | Shirley
org.apache.jasper.JasperException: /example.jsp(20,4) No tag "datepicker" defined in tag library imported with prefix "s" 为什么错了啊。。。  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2009-01-20 09:41 | 蒙太奇
<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2009-01-20 09:41 | 蒙太奇
<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />
会报错的 好像不用能request在include的页面里面.  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2009-03-19 19:43 | 璩立健
<tbody>
<s:iterator value="#session.userList" status="status">
<tr>
<td><s:property value="id"></s:property></td>
<td><s:property value="name"></s:property></td>
<td><s:property value="password"></s:property></td>
<td><s:property value="email"></s:property></td>
<td><s:property value="zipCode"></s:property></td>
</tr>
</s:iterator>
</tbody>

看一下,id,name,password,email,zipCode都是User的属性
我 想打印出所有的User
结果只打印出第一个和最后一个
不知道是什么原因


请高手指教
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2009-03-19 19:43 | 璩立健
<tbody>
<s:iterator value="#session.userList" status="status">
<tr>
<td><s:property value="id"></s:property></td>
<td><s:property value="name"></s:property></td>
<td><s:property value="password"></s:property></td>
<td><s:property value="email"></s:property></td>
<td><s:property value="zipCode"></s:property></td>
</tr>
</s:iterator>
</tbody>

看一下,id,name,password,email,zipCode都是User的属性
我 想打印出所有的User
结果只打印出第一个和最后一个
不知道是什么原因


请高手指教  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2009-03-19 19:43 | 璩立健
<tbody>
<s:iterator value="#session.userList" status="status">
<tr>
<td><s:property value="id"></s:property></td>
<td><s:property value="name"></s:property></td>
<td><s:property value="password"></s:property></td>
<td><s:property value="email"></s:property></td>
<td><s:property value="zipCode"></s:property></td>
</tr>
</s:iterator>
</tbody>

看一下,id,name,password,email,zipCode都是User的属性
我 想打印出所有的User
结果只打印出第一个和最后一个
不知道是什么原因


请高手指教  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2009-03-19 19:43 | 璩立健
<tbody>
<s:iterator value="#session.userList" status="status">
<tr>
<td><s:property value="id"></s:property></td>
<td><s:property value="name"></s:property></td>
<td><s:property value="password"></s:property></td>
<td><s:property value="email"></s:property></td>
<td><s:property value="zipCode"></s:property></td>
</tr>
</s:iterator>
</tbody>

看一下,id,name,password,email,zipCode都是User的属性
我 想打印出所有的User
结果只打印出第一个和最后一个
不知道是什么原因


请高手指教
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2009-03-19 19:43 | 璩立健
<tbody>
<s:iterator value="#session.userList" status="status">
<tr>
<td><s:property value="id"></s:property></td>
<td><s:property value="name"></s:property></td>
<td><s:property value="password"></s:property></td>
<td><s:property value="email"></s:property></td>
<td><s:property value="zipCode"></s:property></td>
</tr>
</s:iterator>
</tbody>

看一下,id,name,password,email,zipCode都是User的属性
我 想打印出所有的User
结果只打印出第一个和最后一个
不知道是什么原因


请高手指教  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2009-04-09 02:19 | hoist
谢谢楼主的分享,文章写的不错,就是有一些常见的拼写有错误,呵呵,瑕不掩瑜。  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍[未登录] 2009-04-28 16:38 | 无名
为咋不把这些知识点做成视频呢?
那样的话 看起来都舒服
学起来 也轻松  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍[未登录] 2009-07-01 17:35 | x
a  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍[未登录] 2009-07-01 17:37 | 硅谷学生
下面的硅谷IT是骗人的!  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2009-08-20 15:41 | david hu
真不错,我可以转到我的博客上吗?  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2009-08-26 22:06 | coco
@John
请问一下,那怎么让他初始化呢???我搞了一天了,还是没有搞出来。请教高人。谢谢啊  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2009-09-11 13:24 | edwakuma
为什么我下的2.1.6的包里面找不到这个类
import com.opensymphony.xwork2.util.OgnlValueStack;

  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2009-12-10 18:15 | dj861212
我也找不到,呜呜  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2010-03-04 10:30 |
我的也找不到The import com.opensymphony.xwork2.util.OgnlValueStack cannot be resolved  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2010-03-04 13:38 |
@edwakuma
OgnlValueStack应该是你用的struts的版本与作者的不一样,我下的2.1.8的,OgnlValueStack是在com.opensymphony.xwork2.ognl这个包中。  回复  更多评论
  
# f 2010-03-22 14:34 | sf
sdgdfgfgdf  回复  更多评论
  
# f 2010-03-22 14:35 | sf
sfgsdffdffgdffgdgdffg  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2010-04-02 16:22 |
今天登录系统特别慢
发现用到标签的页面才特别慢
而且时间标签失效
不知道是怎么回事
有知道的么,请指点
注:只是今天才有这种情况,程序没有变动  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2010-11-03 15:52 | wang_xiaoxin
运行这个JSP时:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Condition Flow</title>
</head>
<body>
<h3>Condition Flow</h3>
<!--
这里有点小技巧:
本来可以用#parameters.name[0]来获得,请求中name的值。但是,在我实现include例子时,
无论我用param标志给name赋任何值,#parameters里面不会含有任何值,所以#parameters.name也为空值。

其原因为:
当使用include标志时,被包含的页面(included)里#parameters拿到的是包含页面里的请求参数。

因此,这里必须手工调用request.getParameter("name")。
-->
<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />
<s:if test="#name == 'Max'">
Max's file here
</s:if>
<s:elseif test="#name == 'Scott'">
Scott's file here
</s:elseif>
<s:else>
Other's file here
</s:else>
</body>
</html>
报如下异常:
org.apache.jasper.JasperException: /struts2_tag.jsp(26,2) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2010-11-15 15:54 | Beautyleg
学习了!!  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2010-12-19 02:00 | uuu
ccc  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2011-03-21 20:14 | tompan
<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />

在version 2.0.11后不再支持。

http://blog.csdn.net/totogogo/archive/2008/03/07/2157448.aspx  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2011-03-21 20:15 | tompan
@tompan
<s:set name="name" value="#parameters.name[0]" />  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2011-04-07 16:14 | zhonghuazhi
<s:datepicker
tooltip="Select Your Birthday"
label="Birthday"
name="birthday" />

为什么我加这个就错了呢? 是什么原因啊? 希望可以指点?  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2011-08-04 17:40 | 大连SEO
最近在学习JAVA 要用到struts2.0
  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2011-09-06 11:20 | 想学发图片上传
LZ我想请教optiontransferselect标签,我不知道那个list里面的值应该怎么写,我看网上很多都是写#request.*,我也跟着这样写,但发现列不出,后来我试着讲拿出来的List类对象组放入map之中,再分别用#request.session.*和#request.*和#session.*都列不出我想要的值  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍 2012-11-11 11:23 | hanada
改成就好了
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Condition Flow</title>
</head>
<body>
<h3>Condition Flow</h3>
<s:set name="name" value="#parameters.name[0]" />
<s:if test="#name == 'Max'">
Max's file here
</s:if>
<s:elseif test="#name == 'Scott'">
Scott's file here
</s:elseif>
<s:else>
Other's file here
</s:else>
</body>
</html>  回复  更多评论
  
# re: 常用的Struts 2.0的标志(Tag)介绍[未登录] 2013-08-19 17:00 | jason
我使用了怎么没反应?@andvar
  回复  更多评论
  
评论共2页: 1 2 下一页 

只有注册用户登录后才能发表评论。


网站导航: