2014-10-13 2 views
1

Здесь я пытаюсь интегрировать Struts 2 с JSON, jQuery и ajax. Он вызывает класс действия, но я не получаю ответ json. Я добавил все JSon плагин и JSON-defult в распорок-XML функциюИнтеграция Struts2 json и ajax не работает

Ajax

function callajax() { 
    alert(1); 
    $.getJSON('edituser.action', function(data) { 
     alert(data); 
    }); 
} 

класс действий.

package com.hyva.accounts.master.useraccountsetup; 

import com.opensymphony.xwork2.ActionSupport; 

/** 
* 
* @author ranjeeth.g 
*/ 
public class MasterUserSetUpActionEdit extends ActionSupport { 

    private String username = "ranjith"; 
    private String password = "1234"; 
    private String fullname = "Ranjith"; 
    private String emailaddress = "Ranjith"; 
    private String telephone = "8762232246"; 

    @Override 
    public String execute() { 
//  System.out.println("session = " + session.isOpen()); 
     return "success"; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getFullname() { 
     return fullname; 
    } 

    public void setFullname(String fullname) { 
     this.fullname = fullname; 
    } 

    public String getEmailaddress() { 
     return emailaddress; 
    } 

    public void setEmailaddress(String emailaddress) { 
     this.emailaddress = emailaddress; 
    } 

    public String getTelephone() { 
     return telephone; 
    } 

    public void setTelephone(String telephone) { 
     this.telephone = telephone; 
    } 
} 

Struts-XML

<action name="edituser" class="com.hyva.accounts.master.useraccountsetup.MasterUserSetUpActionEdit"> 
      <result type="json"></result> 
    </action> 

Обновленный код;

<?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="accounts" namespace="/" extends="hibernate-default,json-default">  
     <action name="login" class="com.hyva.accounts.userlogin.LoginAction" > 
      <interceptor-ref name="defaultStack"></interceptor-ref> 
      <result name="success">/index.jsp</result> 
      <result name="error">/login.jsp</result> 
      <result name="input">/login.jsp</result>   
     </action> 

     <action name="edituser" class="com.hyva.accounts.master.useraccountsetup.MasterUserSetUpActionEdit"> 
      <result type="json"></result> 
     </action> 

     <action name="userlist" class="com.hyva.accounts.master.useraccountsetup.MasterUserSetUpActionList"> 
      <result name="success">/setup_useracount_list.jsp</result> 
     </action> 

     <action name="adduser" class="com.hyva.accounts.master.useraccountsetup.MasterUserSetUpAction"> 
      <interceptor-ref name="jsonValidationWorkflowStack"/> 
      <result name="input">/setup_useracount_list.jsp</result> 
      <result name="success">/setup_useracount_list.jsp</result> 
     </action> 
     <action name="countryList" method="list" class="com.hyva.accounts.master.country.CountryAction"> 
      <result name="success">/setup_country_list.jsp</result> 
     </action> 
     <action name="addCountry" method="saveOrUpdate" class="com.hyva.accounts.country.CountryAction"> 
      <result name="success" type="redirect">countryList</result> 
     </action>   
    </package> 
</struts> 

Если вызов этого URL я получаю

java.lang.NoClassDefFoundError: org/apache/commons/lang/xwork/StringUtils 
    org.apache.struts2.json.SerializationParams.<init>(SerializationParams.java:57) 
    org.apache.struts2.json.JSONResult.writeToResponse(JSONResult.java:214) 
    org.apache.struts2.json.JSONResult.execute(JSONResult.java:204) 
    com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:361) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265) 
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249) 
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
+0

Какая ошибка вы получаете – xrcwrn

+0

Я звоню на этот URL-адрес Я получаю http: // localhost: 8088/iAccountsWeb/edituser.action – user4135983

+0

Используйте те же версии для ящиков S2 и плагинов. –

ответ

1

1) Включите JSON в зависимости от версии Struts2 от here

2) Ваш пакет должен распространяется json-default ниже

<package name="example1" extends="struts-default, json-default"> 
<action name="edituser" class="com.hyva.accounts.master.useraccountsetup.MasterUserSetUpActionEdit"> 
      <result type="json"></result> 
    </action> 
</package> 

3) Проверьте свое действие для результата json, как ваше имя действия в адресе bas http://localhost:8080/edituser

Он покажет ответ json браузеру.

+0

спасибо за ваш повтор, это то, что я использую struts2-core-2.1.6.jar и struts2-json-plugin-2.1.8.1.jar, и я обновил свой код, посмотрите выше. – user4135983

0

Включите Apache's commons-lang-2.x.jar.

Затем, поскольку в 2.1.8 произошли серьезные изменения, имейте в виду, что смешивание 2.1.6 с материалом 2.1.8 - действительно, очень плохо.

Используйте ту же самую версию для всех ваших библиотек распорок. Struts-core, Struts-json, другие, если они есть (struts-spring-plugin, struts-config-browser-plugin, struts-junit-plugin и т. Д.). Все, кроме struts-jquery-plugin, frremarker и ognl (этот бит должен быть выбран в отношении правильной версии, как указано в Struts dependecies page).

После этого фундаментальная попытка обновиться до последней версии (2.3.16.3) из-за проблем с безопасностью (и по другим причинам). Если вы пойдете таким образом, включите как Apache commons-lang-2.x.jar, так и Apache commons-lang3-3.x.jar (если только последнего недостаточно, из-за устаревшего кода). Поскольку они находятся в разных пакетах, они могут cohexist.

Смежные вопросы