3

我的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在不同的文件夹中显示不同的Spring。这可能吗?如果不是,还有什么替代方法。

希望我们的堆栈用户能帮助我。

4

2 回答 2

6

1改变

<property name="prefix" value="/WEB-INF/folder1/" />

<property name="prefix" value="/WEB-INF/" />

并返回带有文件夹路径的视图

return "folder1/page4";

2其他方法是配置多个视图解析器 bean 并为每个设置优先级。检查以下链接以获取解决方案和限制。

spring mvc中的多个视图解析器

具有多个视图解析器的 Spring MVC

编辑

另一种方法是通过扩展来构建您自己的视图解析器InternalResourceViewResolver。在扩展视图解析器中,您可以添加逻辑以扫描子文件夹并找到具有返回视图名称的 jsp 文件。

于 2013-10-04T09:04:36.890 回答
0

您可以选择为 ViewResolver 指定哪个文件夹。

如果指定 /folder1,JSP 将在 folder1 下解析。如果不这样做,则需要在需要时自己指定 /folder1。

如果您确实需要或它有助于分解,您可以使用函数或常量为您执行此操作。

public class Views {
    public static String legacy (String name) {return "folder1/"+name;}
    public static String modern (String name) {return "folder2/"+name;}
}

如果您在单独的应用程序上下文中定义控制器,您可以将它们与单独配置的 ViewResolver(具有不同的路径)挂钩。

但这一切对我来说似乎很明显,我不确定你为什么要问这样的问题。Spring 能神奇地知道对于一个视图,你想要一个不同的文件夹吗?我希望不会,我希望它能够在我指定的文件夹中可靠地工作。

于 2013-10-04T10:16:12.267 回答