===TestAction.java===
访问testAction时,跳转到print.jsp
===print.jsp===
- public class TestAction extends ActionSupport
- {
- private String name = "hello struts2";
- public String getName(){return this.name;}
- public String execute() throws Exception
- {
- return SUCCESS;
- }
- }
访问testAction时,跳转到print.jsp
===print.jsp===
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%@ taglib prefix="s" uri="/struts-tags"%>
- <html>
- <body>
- name值:<s:property value="name" /><br>
- name值:<s:textfield value="name" /><br>
- name值:<s:textfield value="%{name}" />
- </body>
- </html>
我直接去访问testAction,然后看到页面输出
name值:hello struts2
name值:
name值:hello struts2
为什么struts的property标签的value属性值里可以直接使用ognl,而在struts的textfield标签的value属性值里必须在ognl外加%{}
通常什么情况下,ognl外要套上%{}呢?
在struts2字符串中用%{}指出,其内部是一个ognl表达式,需要解析。此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/69641.html
如<s:textfield lable="user" name="user" value="%{#session.user}" />
不过有些标签默认认定,整个字符串就是一个表达式,所以不用%{}
如<s:property value="#session.user" />
在非struts2标签中,是不能用%{}的,可以用以下方法
<input name="user" value="${session.user}" />,这是el表达式。
<input name="user" value="<s:property value='#session.user' />" />,这是struts2表达式嵌套用法。
但是注意,不能在struts2标签中的字符串中,再次嵌套struts2标签。
如<s:textfield lable="user" name="user" value="<s:property value='#session.user' />" />
也不能在struts2标签中用el表达式,
如<s:textfield lable="user" name="user" value="${session.user}" />