首頁 >Java >java教程 >如何使用 JSON 外掛程式解決 Struts2 中的「沒有為操作 action.Part 和結果定義結果」錯誤?

如何使用 JSON 外掛程式解決 Struts2 中的「沒有為操作 action.Part 和結果定義結果」錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-09 01:28:10546瀏覽

How to Resolve

未經授權存取不存在的操作或結果


錯誤訊息「沒有為操作定義結果。部分和結果{"col1":"col1","col2":"col2"}" 表示Struts2 無法在您的應用程式設定中找到指定的操作或結果。


了解Struts2-JSON 外掛


Struts2-JSON 外掛程式序列化預設將整個操作轉換為JSON,不包括瞬態屬性或沒有getter 的屬性。但是,您可以透過指定定義應序列化操作的哪一部分的根物件來自訂此行為。


使用根物件解決問題


在您的情況下,您可以定義一個自訂根物件(例如 MyRow)來表示行的資料結構。然後,您可以在 Struts2 配置中使用此根物件來指定 JSON 序列化應使用它而不是整個操作。

以下是程式碼外觀的範例:

值物件:


公共類別MyRow 實現Serialized {<pre class="brush:php;toolbar:false">private static final long serialVersionUID = 1L;

private String col1; 
private String col2;

// Getters
public String getCol1(){ 
    return this.col1; 
}
public String getCol2(){ 
    return this.col2; 
}

}


動作類別:


公共類別PartAction 實作Serialized {<pre class="brush:php;toolbar:false">private static final long serialVersionUID = 1L;

private List<MyRow> rows;   

// Getter
public  List<MyRow> getRows() { 
    return this.rows; 
} 

public String finder() {
    String result = Action.SUCCESS;
    rows = new ArrayList<MyRow>();

    try {
        Iterator it = findList.iterator();
        while(it.hasNext()) {
            SearchResult part = (SearchResult) it.next();
            MyRow row = new MyRow();
            row.setCol1(part.getcol1());
            row.setCol2(part.getcol2());
            rows.add(row);
        }
    } catch (Exception e) {
        result = Action.ERROR;
        log.error(e);
    }
    return result;
}  

}


Struts .xml配置:


<pre class="brush:php;toolbar:false"><action name=&quot;finder&quot;>




jQuery成功回調:


var handledata =函數(資料){<pre class="brush:php;toolbar:false">$.each(data, function(index) {
    alert(data[index].col1);
    alert(data[index].col2);
});     

}

以上是如何使用 JSON 外掛程式解決 Struts2 中的「沒有為操作 action.Part 和結果定義結果」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn