2013-04-05 67 views
2

我的代碼很好。但是我遇到了一個問題。我想在struts2的選擇框中填充json數據。在struts2的下拉列表中顯示JSON數據

我在做什麼是..我發送ajax請求點擊按鈕並顯示錶單。

表單最初具有屬性顯示無。當我點擊按鈕時,它將變爲阻止。

但是每當我打開我的jsp頁面進入瀏覽器時就會出現一個錯誤。

請求列表鍵 '類' 不能被解析爲 收集

我在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.custom.i18n.resources" value="LoginAction" /> 
    <package name="default" extends="struts-default" namespace="/"> 
     <action name="Login" class="com.agents.cb.LoginAction" > 
      <result name="success" type="redirect">Welcome.jsp</result> 
      <result name="input">login.jsp</result> 
     </action> 
     <action name="Register" method="register" class="com.agents.cb.LoginAction" > 
      <result name="success">login.jsp</result> 
     </action> 
    </package> 
    <package name="admin" extends="json-default" namespace="/admin"> 
     <action name="addCategory" method="addCategory" class="com.type.user.Admin" > 
      <result type="json"> 
       <param name="excludeNullProperties">true</param> 
       <param name="excludeProperties"> 
        catName,catCode 
       </param> 
      </result> 
     </action> 
     <action name="categories" method="categories" class="com.type.user.Admin" > 
      <result type="json"> 
       <param name="excludeNullProperties">true</param> 
       <param name="excludeProperties"> 
        catName,catCode,status 
       </param> 
      </result> 
     </action> 
    </package> </struts> 

Admin.java文件

package com.type.user; 

import java.io.PrintWriter; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import com.opensymphony.xwork2.ActionSupport; 
import java.util.List; 
import java.util.ArrayList; 
import java.util.Map; 
import java.util.HashMap; 

import com.type.product.*; 

public class Admin extends ActionSupport { 
    private String catCode; 
    private String catName; 
    private HttpServletRequest request; 
    private Map<String, String> categories = new HashMap<String, String>();; 

    private String status; 

    public Map<String, String> getCategories() { 
     return categories; 
    } 

    public void setCategories(Map<String, String> categories) { 
     this.categories = categories; 
    } 

    public void setServletRequest(HttpServletRequest request) { 
     this.request = request; 
    } 

    public String getCatCode() { 
     return catCode; 
    } 

    public void setCatCode(String catCode) { 
     this.catCode = catCode; 
    } 

    public String getCatName() { 
     return catName; 
    } 

    public void setCatName(String catName) { 
     this.catName = catName; 
    } 

    public String getStatus() { 
     return status; 
    } 

    public void setStatus(String status) { 
     this.status = status; 
    } 

    public String addCategory() { 
     Product prod = new Product(); 
     boolean flag = prod.addCat(catCode, catName); 
     //boolean flag=false; 
     if (flag) { 
      status=catName+" added successfully."; 
      return SUCCESS; 
     } else { 
      status="Error occurred while adding "+catName; 
      return SUCCESS; 
     } 
    } 

    public String categories(){ 
     System.out.println("step 1"); 
     Product prod=new Product(); 
     categories=prod.getAllCategories(); 
     return SUCCESS; 
    } 
} 

我script on jsp頁面

$(".add_sub_category").click(function(e){ 
       e.preventDefault(); 
       $.ajax({ 
        url : '/Login/admin/categories', 
        type : 'POST', 
        dataType : 'json', 
        sucess : function(resp) { 
         console.log(resp); 
        } 
       });    
      }); 

請幫忙。我在哪裏做錯了?爲什麼我有這個問題。

回答

0

你宣佈這個

<package name="admin" extends="json-default" namespace="/admin"> 
    <action name="categories" method="categories" class="com.type.user.Admin" > 

,但是你想在

url : '/Login/admin/categories', 

將其更改爲你聲明的路徑來調用它:

url : '/admin/categories', 

因爲登錄不被任何定義作爲命名空間的一部分。

不同的命名空間玩的時候......

希望幫助

+0

登錄是我的項目的名稱也要注意。我試着改變你說的話。但錯誤仍然存​​在。 – 2013-04-05 17:42:23