Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Code Block
xml
xml
titleProbably wrong!
<s:textfield key="state.label" name="state" value="CAca"/>

If a textfield is passed the value attribute "CAca", the framework will look for a property named getCa. Generally, this is not what we mean. What we mean to do is pass a literal String. In the expression language, literals are placed within quotes

Code Block
xml
xml
titlePassing a literal value the right way
<s:textfield key="state.label" name="state" value="%{'CAca'}" />

Another approach would be to use the idiom value="'CAca'", but, in this case, using the expression notation is recommended.

...

  1. All String attribute types are parsed for the "%{ ... }" notation.
  2. All non-String attribute types are not parsed, but evaluated directly as an expression
  3. The exception to rule #2 is that if the non-String attribute uses the escape notion "{%{}", the notation is ignored as redundant, and the content evaluated.
Note

Please remember about altSyntax option that can change when value is evaluated as an expression - Alt Syntax

Expression Language Notations

Code Block
<p>Username: ${user.username}</p>

A JavaBean object in a standard context in Freemarker, Velocity, or JSTL EL (Not OGNL).

Code Block
<s:textfield name="username"/>

A username property on the Value Stack.

Code Block
<s:url id="es" action="Hello">
  <s:param name="request_locale">
    es
  </s:param>
</s:url>
<s:a href="%{es}">Espanol</s:a>

Another way to refer to a property placed on the Value Stack.

Code Block
<s:property
  namevalue="#session.user.username" />

The username property of the User object in the Session context.

Code Block
<s:select
  label="FooBar" name="foo"
  list="#{'username':'trillian',
    'username':'zaphod'}" />

A static Map, as in put("username","trillian").

Disallowed property names

The following names of property are disallowed:

  • parameters
  • application
  • session
  • struts
  • request
  • servletRequest
  • servletResponse

The below code will not work:

Code Block
xml
xml

<s:iterator value="parameters"/>
Code Block
java
java

public class MyAction {

    private String[] parameters;

    public String[] getParameters() {
        return parameters;
    }

}

Next: JSP