Я хочу вызвать действие Struts2 Используя jquery -ajax в WebSpherePortal 6.1? - PullRequest
0 голосов
/ 15 июля 2011

Привет, я хочу вызвать struts2 action, используя jquery ajax, могу вызывать только Servlet, используя ajax. Пожалуйста, помогите. Вот мой код:

Мои 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>
      <package name="view" extends="struts-portlet-default"
    namespace="/view">

   <action name="bcmPMPF"
     class="com.ibm.pm.action.PMPeriodicAction" method="prepare">
     <result name="success">/_JQGridPorletCrudColumns/jsp/html   
          /JQGridPorletCrudColumnsPortletView.jsp</result>
       </action>
         <action name="bcmPMPFC.action"
          class="com.ibm.pm.action.PMPeriodicColumnAction" method="prepare">
          <result name="success">/_JQGridPorletCrudColumns/jsp/html
          /JQGridPorletCrudColumnsPortletView.jsp</result>
    </action>

    </package>
    </struts> 

      and my jsp page is:
          <SCRIPT LANGUAGE="JavaScript">
     var colModel;
   var colNames;
    var
 urlPath='<%=renderResponse.encodeURL(renderRequest.getContextPath())%>'+"/BCMRoleInstanceServlet";
      var urlColPath='<%=renderResponse.encodeURL(renderRequest.getContextPath())%>'+'/view/bcmPMPFC';
        $(document).ready(function(){

         $("#srid").live('change',(function(event){

        $.ajax(
          {
        type: "POST",
       url: urlColPath,
         data: "",
        dataType: 'json',
         success: function(result)
                {

            alert("result:"+result);


             }
           });

         }));

1 Ответ

1 голос
/ 16 июля 2011

Убедитесь, что в вызове ajax установлено значение «Traditional: true», иначе Struts2 по умолчанию не будет анализировать передаваемые ему аргументы ... что-то вроде:

$.ajax({
    tradional: true,
    type: "POST",
    url: urlColPath,
    data: "",
    dataType: 'json',
    success: function(result)
    {
        alert("result:"+result);
    }
});

Также убедитесь, что URL-адресПравильно рассмотреть использование тега действия:

url: '<s:url namespace="/somePlace" name="someAction"/>',

Приведенное выше создает что-то вроде:

http://whatEverYourContextRootIs:8080/somePlace/someAction.action

...