我的WEB-INF
中有两个文件夹。
Folder1 包含3个jsp,如page1.jsp , page2.jsp , page3.jsp
。
Folder2 包含page4.jsp
。
在 dispatcher-Serlet.xml 中,我配置了,
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/folder1/" />
<property name="suffix" value=".jsp" />
</bean>
在控制器中,
@RequestMapping(value="page4.html",method=RequestMethod.GET)
public String getTransfer(){
List<String> list = new LinkedList<String>();
Hashtable<String , Object> map = MyHashtableClasss.getDetails;
if(!map.isEmpty()){
Set<String> keys = map.keySet();
for(String key: keys){
list.add(map.get(key).getUserName());
}
}
model.addAttribute(list);
return "page4";
}
如何将 page4.jsp 添加到视图中。因为我在Folder1中没有page4.jsp。
一般情况下,如何在JSP
中的differenf文件夹中显示不同的Spring
。这可能吗?如果没有,那么替代方案是什么。
希望我们的堆栈用户能帮助我。
答案 0 :(得分:6)
1 更改
<property name="prefix" value="/WEB-INF/folder1/" />
到
<property name="prefix" value="/WEB-INF/" />
并返回带文件夹路径的视图
return "folder1/page4";
2 其他方法是配置多个视图解析程序bean并为每个bean设置优先级。请查看以下链接以了解解决方案和限制。
Multiple View resolvers in spring mvc
Spring MVC with multiple view resolvers
修改强>
另一种方法是通过扩展InternalResourceViewResolver
来构建自己的视图解析器。在扩展视图解析器中,您可以添加逻辑来扫描子文件夹,并找到带有返回视图名称的jsp文件。
答案 1 :(得分:0)
您可以选择为ViewResolver指定的文件夹。
如果指定/ folder1,则将在folder1下解析JSP。如果不这样做,则需要在需要时自行指定/ folder1。
如果您确实需要或者它有助于分解,您可以使用函数或常量来为您执行此操作。
public class Views {
public static String legacy (String name) {return "folder1/"+name;}
public static String modern (String name) {return "folder2/"+name;}
}
如果在单独的应用程序上下文中定义控制器,则可以使用单独配置的ViewResolver(具有不同的路径)将它们连接起来。
但对我来说这一切似乎都很明显,我不确定你为什么要提出这样的问题。 Spring可以神奇地知道,对于一个视图,你想要一个不同的文件夹吗?我希望不是,我更喜欢它在我指定的文件夹中可靠地工作。