struts2配置问题,如果配置为/*,树形可以显示,但birt报表无法访问,如果配置为*.action,树形无法显示
web.xm配置如下:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2...
web.xm配置如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
如果这里<url-pattern>/*</url-pattern>配置为/*,那么树形显示正常,但是birt报表无法访问了,访问报表报错:
There is no Action mapped for namespace / and action name frameset.
把namespace当作action进行访问了,
但是如果配置为<url-pattern>*.action</url-pattern>,树形又不显示了,
树形代码如下:
<script language="JavaScript" type="text/javascript">
function treeNodeSelected(node) {
/*判断被选中节点是否是叶子节点,不是则展开*/
if (node.node.children.length > 0) {
node.node.expand();
return;
}
dojo.io.bind({
url : "<s:url value='RateAction.action'/>?nodeId="
+ node.node.widgetId,
load : function(type, data, evt) {
//var divDisplay = dojo.byId("showDiv");
//divDisplay.innerHTML = data;
},
mimeType : "text/html"
});
}
/*订阅选择节点后发布的主题*/
dojo.event.topic.subscribe("treeSelected", treeNodeSelected);
dojo.event.topic.subscribe("turnTreeSelected", treeNodeSelected);
</script>
<!-- 部门树 -->
<div id="div_TreeLine">
<sx:tree id="ServiceList" rootNode="root" nodeTitleProperty="name"
nodeIdProperty="id" childCollectionProperty="children"
treeSelectedTopic="treeSelected" />
</div>
<!-- 班组 树-->
<div id="div_TreeItem">
<sx:tree id="turnTree" rootNode="turnRoot" nodeTitleProperty="name"
nodeIdProperty="id" childCollectionProperty="children"
treeSelectedTopic="turnTreeSelected" />
</div>
报表访问:
<iframe width="700" height="400" frameborder="1" src="<%= path + "/frameset?__report=reports/report2.rptdesign&__format=HTML" %>"></iframe>
谢谢,我已经解决了! 展开
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
如果这里<url-pattern>/*</url-pattern>配置为/*,那么树形显示正常,但是birt报表无法访问了,访问报表报错:
There is no Action mapped for namespace / and action name frameset.
把namespace当作action进行访问了,
但是如果配置为<url-pattern>*.action</url-pattern>,树形又不显示了,
树形代码如下:
<script language="JavaScript" type="text/javascript">
function treeNodeSelected(node) {
/*判断被选中节点是否是叶子节点,不是则展开*/
if (node.node.children.length > 0) {
node.node.expand();
return;
}
dojo.io.bind({
url : "<s:url value='RateAction.action'/>?nodeId="
+ node.node.widgetId,
load : function(type, data, evt) {
//var divDisplay = dojo.byId("showDiv");
//divDisplay.innerHTML = data;
},
mimeType : "text/html"
});
}
/*订阅选择节点后发布的主题*/
dojo.event.topic.subscribe("treeSelected", treeNodeSelected);
dojo.event.topic.subscribe("turnTreeSelected", treeNodeSelected);
</script>
<!-- 部门树 -->
<div id="div_TreeLine">
<sx:tree id="ServiceList" rootNode="root" nodeTitleProperty="name"
nodeIdProperty="id" childCollectionProperty="children"
treeSelectedTopic="treeSelected" />
</div>
<!-- 班组 树-->
<div id="div_TreeItem">
<sx:tree id="turnTree" rootNode="turnRoot" nodeTitleProperty="name"
nodeIdProperty="id" childCollectionProperty="children"
treeSelectedTopic="turnTreeSelected" />
</div>
报表访问:
<iframe width="700" height="400" frameborder="1" src="<%= path + "/frameset?__report=reports/report2.rptdesign&__format=HTML" %>"></iframe>
谢谢,我已经解决了! 展开
3个回答
展开全部
url-pattern为 *.action
如果树形菜单是通过自己的filter过滤的,就把树形菜单的filter配置放在struts2的上面
比如一些不需要响应的请求(如ajax请求),struts2的filter会自动拦截,它下面的filter就无法拦截到
这跟web.xml的加载顺序有关的
如果共用一个filter,表示需要看情况
如果树形菜单是通过自己的filter过滤的,就把树形菜单的filter配置放在struts2的上面
比如一些不需要响应的请求(如ajax请求),struts2的filter会自动拦截,它下面的filter就无法拦截到
这跟web.xml的加载顺序有关的
如果共用一个filter,表示需要看情况
更多追问追答
追问
树形菜单是通过ajax实现的,也需要访问action,我就配置了一个filter,第一次使用struts2的动态树,你说的树形菜单通过自己的filter过滤,怎么一回事啊?又怎么配置啊
追答
配置为 *.action
url : "?nodeId="
+ node.node.widgetId,
你的意思是树形菜单全部不能加载,还是子菜单加载不出来?
你提供的信息不够
展开全部
如果/*可以访问树形结构那没问题,你先设置成/*跑一次,点击显示报表的那个节点查看源码显示的iframe的src到底是多少,贴出来看看,如果没有猜错,你的src中的path是本地路径,也就是说你本地可以跑但是放到服务器就不行了,所以不建议使用获取真实路径的做法而应该是获取相对路径。你有查看过/*下的iframe的src到底是什么地址吗?贴出来看看吧!
追问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询