无法在Liferay中使用Jquery Ajax调用Struts2 Action

时间:2012-04-20 05:53:45

标签: jquery struts2 liferay

我无法在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>

1 个答案:

答案 0 :(得分:1)

尝试更改

<portlet:param name="struts_action" value="/getChartData" />

<portlet:param name="struts.portlet.action" value="/namespace/getChartData" />

Struts2期望一个具有该名称的param。

另一方面,struts可能正在尝试查找操作的命名空间。应该在struts.xml中<modules>标记的属性中定义名称空间。 (如果失败,请尝试删除命名空间)。