struts2标签结合EL表达式进行比较
本身的写法就错着呢。${u.id==1?’张三’:’李四’}如果这个放到if条件还成立,取出来算怎么回事。
《td》
《c:choose》
《c:when text=“${u.id==1}“》
张三
《/c:when》
《c:otherwise》
李四’
《/c:otherwise》
《/c:choose》
《/td》
为什么我在struts2中使用EL表达式时就会报这个错
你肯定定义了自定义标签,在你的web.xml中需要加入《jsp-config》
《taglib》
《taglib-uri》/mytablibURI《/taglib-uri》
《taglib-location》/WEB-INF/tlds/HelloTaglib.tld《/taglib-location》
《/taglib》
《/jsp-config》
这个是web.xml需要配置的 ,另外 能贴下你的tld代码和jsp代码吗? 这个代码的意思是你在tld里面声明的属性没有设置参数的,但是你却加了参数,自定义标签稍微有一点错,你的页面就跑不起来
Struts2标签已经不再支持EL表达式了吗
《s:url id=“select“ value=“${pageContext.request.contextPath}“》,Struts2标签里面不可以嵌套EL表达式。
虽然Struts2标签里面不可以嵌套EL表达式,但是你在JSP页面里面还可以使用EL表达式。如:《span》${pageContext.request.contextPath}《/span》。《span》标签是HTML标签,可以使用EL表达式取值。
需要注意的是:
页面启用EL表达式:《%@ page isELIgnored=“false“ %》 ,如果web.xml里用web-app_2_4.xsd声明的话,在JSP页面就不用再显式声明,默认是可以识别EL表达式的。工程的web.xml声明部分一般有如下版本的xsd, web-app_2_2.xsd ,web-app_2_3.xsd
,web-app_2_4.xsd ,web-app_2_5.xsd 。我博客有详细说明,有什么问题可以再接着探讨
EL表达式和struts 2 OGNL区别
这段就是带参数的url
相当于
hello
action的URL后面加上
?userName=Bruce+Phillips${helloLink}是EL表达式 《s:url
action=“hello“
var=“helloLink“》
《s:param
name=“userName“》Bruce
Phillips《/s:param》
《/s:url》
实际上这段的意思是将带参数的url字符串放到request属性中,再通过EL把它取出来${helloLink}可以换成${requestScope.helloLink}
关于struts2框架的OGNL表达式
Struts 2框架使用OGNL作为默认的表达式语言。 相对EL表达式,它提供了平时我们需要的一些功能,如: 支持对象方法调用,如xxx.sayHello(); 支持类静态方法调用和值访问,表达式的格式为 [类全名(包括包路径)] 方法名 | 值名], Ognl 有一个上下文(Context)概念,说白了上下文就是一个MAP结构,它实现了java.utils.Map接口,在Struts2中上下文(Context)的实现为ActionContext,下面是上下文(Context)的结构示意图 2.访问上下文(Context)中的对象需要使用#符号标注命名空间,如#application、#session 另外OGNL会设定一个根对象(root对象),在Struts2中根对象就是ValueStack(值栈) 。如果要访问根对象(即ValueStack)中对象的属性,则可以省略#命名空间,直接访问该对象的属性即可。 在struts2中,根对象ValueStack的实现类为OgnlValueStack,该对象不是我们想像的只存放单个值,而是存放一组对象。在OgnlValueStack类里有一个List类型的root变量,就是使用他存放一组对象
在struts2中,什么el表达式能够取出Action中的属性值啊,没有看见把属性值加入到scope里啊
在action类中,引入ServletActionContext类,可以通过该类的静态方法getRequest()获取,它返回的就是HttpServletRequest。
当然,在action中有getAbc()方法的,在页面上就可以使用el静态式${abc}获取该函数的返回值。
struts2里面怎么用el表达式取值
struts2中action及其属性会被包装成actionContext,在actionContext中有request、session等各个域,action中的属性会同步到request中,也就是放到了request作用域中,所以el表达式也可以取出。
你也可以用ActionContext.getSession.put(),(不知道记错没,你可以试试)手动将某个属性值放到session中,然后在jsp页面用el表达式也可以取出来。
struts2中el表达式问题
Struts2(webwork)中一个很关键的概念是:valueStack(值栈)
具体网上很多见识啦,不一一描述。
在JSP页面上用Struts2-tag申明各种表达式获取值,都是从valueStack里取值。
所以,在Action里,重要的是把值放入valueStack。
最常用,最常用,最常用的
莫过于Action的成员变量,它们是会自动被放入valueStack的。
因此,
struts2
的入门知识,就是利用Action的成员变量在Action和JSP之间传递数值。
import
com.opensymphony.xwork2.ActionSupport;
public
class
loginAction
extends
ActionSupport
{
private
int
information
;
public
String
execute()
throws
Exception
{
information
=
3;
return
“success“;
}
//注意${information
}会反射调用getinformation方法的值,而非取information变量本身
public
int
getinformation
(){
return
information
;
}
}
struts2中为什么可以用EL表达式取出valuestack中的值
嗯.是的,struts2中action及其属性会被包装成actionContext,在actionContext中有request、session等各个域,action中的属性会同步到request中,也就是放到了request作用域中,所以el表达式也可以取出。
你也可以用ActionContext.getSession.put(),(不知道记错没,你可以试试)手动将某个属性值放到session中,然后在jsp页面用el表达式也可以取出来。