我对struts动作中Result标记的Result类型感到困惑。我有一个jsp页面,它有本机/基本的jsp标签和代码。我想在成功完成一个动作后显示jsp页面。我不明白我选择的结果类型是什么,因为如果我选择type="dispatcher
,那么它不起作用。事实上,我的首页中有一个超级链接,它是简单的html。当我点击该超链接时,在成功完成操作后调用该操作,页面不会更改,我仍然保留在首页。如果我选择freemarker type
,那么我得到了我的jsp页面,但它不解析jsp标签,代码只是解析hmtl代码。如果我选择plainText type
然后我再次获得我的jsp页面,但我只是在浏览器中以纯文本形式获取代码。任何人都可以建议谁来解决我的问题。
行动方法
public String showDomains() {
IDPBroker broker = new IDPBroker();
domains = broker.retrieveDomainList();
return ActionSupport.SUCCESS;
}
JSP文件(为简单起见,我删除了很多代码)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" >
<title>Domain Management</title>
</head>
<body>
<div
style="margin: 0 auto; border-style: solid; border-width: 2px; width: 800px; height: 600px;">
<div style="height: 450px; margin-top: 10px; text-align: center;">
<a href="<s:url action='hello'/>">Hello World</a>
</div>
</div>
</body>
</html>
struts.xml中
<?xml version="1.0" encoding="UTF-8" ?>
<constant name="struts.configuration.xml.reload" value="false" />
<constant name="struts.i18n.reload" value="false" />
<constant name="struts.action.excludePattern"
value="/images/.*,/_ah/.*,/odata.svc/*.*,/assets/.*,/prototype/.*,/notifications,/error/.*,/unLockSubmissions" />
<constant name="struts.enable.SlashesInActionNames" value="false" />
<constant name="struts.freemarker.mru.max.strong.size" value="250" />
<!-- When on production make the updateDelay as 15 mins -->
<constant name="struts.freemarker.templatesCache.updateDelay"
value="0" />
<constant name="struts.multipart.maxSize" value="10485760" />
<constant name="struts.action.extension" value="" />
<package name="default" namespace="/" extends="struts-default">
<!-- Default action name -->
<default-action-ref name="Index" />
<action name="Index">
<result name="success" type="freemarker" >/WEB-INF/html/index.html</result>
</action>
<action name="showDomains" class="com.convergent.struts2.actions.DomainManagementAction"
method="showDomains">
<result name="success" type="dispatcher">/domain_management.jsp</result>
</action>
</package>