私は自分のコードでうまくいっていました。しかし、私は1つの問題に直面しています。struts2 の選択ボックスに json データを入力したいと考えています。
私がやっていることは..ボタンのクリックでajaxリクエストを送信し、フォームを表示しています。
フォームには、最初はプロパティ display none があります。ボタンをクリックすると、ブロックに変わります。
しかし、ブラウザで JSP ページを開くたびに 1 つのエラーが発生します。
要求されたリスト キー 'categories' をコレクションとして解決できませんでした
私の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;
}
}
jspページの私のスクリプト
$(".add_sub_category").click(function(e){
e.preventDefault();
$.ajax({
url : '/Login/admin/categories',
type : 'POST',
dataType : 'json',
sucess : function(resp) {
console.log(resp);
}
});
});
助けてください。私はどこで間違っていますか?そして、なぜ私はこの問題を抱えているのですか。