InternalResourceViewResolver
允许您将导出bean的说明用于jsp上下文。例如,如果你想揭露豆的列表,你应该在你配置视图解析器dispatcher-servlet.xml
下一个方法:
...
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<property name="exposedContextBeanNames">
<list>
<value>someBean</value>
</list>
</property>
</bean>
...
其中someBean
是你想出口到JSP上下文的bean的名称。你甚至可以公开所有春豆:
...
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<property name="exposeContextBeansAsAttributes" value="true"/>
</bean>
...
这允许您访问由bean的名字去春来从JSP背景豆。
比方说你的标签的处理程序是这样的:
package com.mytags;
public class SomeTag extends SimpleTagSupport {
private SomeBean bean;
@Override
public void doTag() throws JspException, IOException {
getJspContext().getOut().write(bean.doSomething());
}
public SomeBean getBean(){...}
public void setBean(SomeBean bean){...}
}
然后在TLD的标签进行说明接下来方式:
...
<tag>
<name>someTag</name>
<tag-class>com.mytags.SomeTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>bean</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>com.mybeans.SomeBean</type>
</attribute>
</tag>
...
注意,你必须指定rtexprvalue
为true
,因为你会将bean作为EL表达式传递给标签。现在你可以在JSP中使用这个标签:
<%@ taglib prefix="mytags" uri="http://mytags.com" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<mytags:someTag bean="${someBean}"/>
</body>
</html>
但实际上它是不是好主意,右直接从标签的处理程序访问的Spring bean。标签必须知道如何显示数据,但应该从如何获取这些数据中抽象出来。更好地准备好要显示在控制器中的所有数据,并将其作为模型传递给jsp。
谢谢你写这样一个全面的答案,正是我所期待的。 – Snickers3192