struts2中的altSyntax


/**
* This class provides a central location for framework configuration keys used
* to retrieve and store Struts configuration settings.
*/
public final class StrutsConstants {

..........................
 /** Whether to use the alterative syntax for the tags or not */
  public static final String STRUTS_TAG_ALTSYNTAX = "struts.tag.altSyntax";
  //使用 alternative syntax 在大多数地方需要 %{} 来计算标签的字符串属性的值


  /**
   * 从webwork.tag.altSyntax的字面上看,这个属性与tag相关,而且altSyntax中的alt就是alternative的意思,那么与Syntax合在一起,就应该表示另外一种可供选择的语法了。在查阅了相关文档,包括《WebWork
   * In
   * Action》的第三章之后,对这个属性有了比较全面的认识。在WebWork2.1.7中,altSyntax的default值为false,在这种情况下并不支持新的语法。那么在旧的语法中,如果要为标签的某一属性设置String类型的值,就必须给这个值加上单引号了,这是由WebWork所支持的OGNL语法决定的。如果你不使用单引号将用以赋值的value括起来的话,那么这个value将会被认为是存在于Value
   * Stack的Object所对应的key,在标签被parse的过程中,就会以这个value为key到Value
   * Stack中找对应的内容,结果是可想而知的了——找不到,因为你根本就没有往Value Stack中增加这样的键值对。以昨天的Post中的代码为例:
   * <ww:textfield label="Please enter your name:" name="name" />
   * 在旧的语法体系里,textfield标签被parse的过程中,label的值"Please enter your
   * name:"会被当作是一个Key,从Value
   * Stack中找相应的内容,并返回找到的内容作为label属性的值。这很明显是拿不到具体的值的,最后将会返回一个空字符串。这正好与昨天出现的错误情况是吻合的。为了直接给label设置String值,我们就要使用单引号将具体的String值括起来了。这样的语法确实很灵活,你可以让JSP拥有更多的动态性,但是不好的地方也很明显,页面将会充斥着单引号和双引号的混合体,代码将难以维护。于是,新的语法被提了出来:使用%{...}来指明某一个部分需要到Value
 
  * Stack中取值,这样就可以将多余的单引号去掉了。为了使用新的语法,我们就必须将altSyntax设为true。这一点在WebWork2.1.7的使用过程中,尤为需要注意的。    * 最后再强调一点,在WebWork2.2中,将会全面启用新的语法,也就是altSyntax的默认值为true了,甚至压根就会把这个属性值给去掉。所以,大家还是应该以新的语法为准,而且新的语法会更好用,你说呢?
 

你可能感兴趣的:(jsp,struts,Webwork)