我无法在Liferay6.1中使用Jquery Ajax调用Struts2 Action
请看下面的文件,我粘贴在下面,如果这不是打电话的方式,请告诉我。
Jsp页面
<portlet:renderURL var="getChartData" windowState="<%= LiferayWindowState.EXCLUSIVE.toString() %>">
<portlet:param name="struts_action" value="/getChartData" />
</portlet:renderURL>
<script type="text/javascript">
$(document).ready(function(){
alert('jjjj');
$.ajax({
type : 'POST',
url : '<%=getChartData%>',
data: "countryId="+countryId,
success : function(data){
alert(data);
}
});
});
</script>
struts.xml中
<action name="getChartData" class="com.actions.ImageDisplayAction" method="getChartData">
<result name="success">/WEB-INF/view/blank.jsp</result>
</action>
portlet.xml
<portlet>
<portlet-name>DisplayImages</portlet-name>
<display-name>DisplayImages</display-name>
<portlet-class>org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher</portlet-class>
动作类
public class ImageDisplayAction extends ActionSupport {
public String getChartData() {
System.out.println("Hi ");
System.out.println("Hi ");
System.out.println("Hi ");
System.out.println("Hi ");
return SUCCESS;
}
}
更新部分:
我没有得到任何异常,这是我完整的struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.multipart.saveDir" value="D:\\ant" />
<package name="view" extends="struts-portlet-default">
<action name="index" >
<result name="input">/WEB-INF/view/index.jsp</result>
<result name="success">/WEB-INF/view/index.jsp</result>
</action>
<action name="getChartData" class="com.actions.ImageDisplayAction" method="getChartData">
<result name="success">/WEB-INF/view/blank.jsp</result>
</action>
</package>
</struts>
这是我的JSP文件(No chnages)
<portlet:renderURL var="getChartData" windowState="<%= LiferayWindowState.EXCLUSIVE.toString() %>">
<portlet:param name="struts_action" value="/getChartData" />
</portlet:renderURL>
<script type="text/javascript">
$(document).ready(function(){
alert('jjjj');
$.ajax({
type : 'POST',
url : '<%=getChartData%>',
data: "countryId="+countryId,
success : function(data){
alert(data);
}
});
});
</script>
答案 0 :(得分:1)
尝试更改
<portlet:param name="struts_action" value="/getChartData" />
到
<portlet:param name="struts.portlet.action" value="/namespace/getChartData" />
Struts2期望一个具有该名称的param。
另一方面,struts可能正在尝试查找操作的命名空间。应该在struts.xml中<modules>
标记的属性中定义名称空间。 (如果失败,请尝试删除命名空间)。