3

autocompleterStruts2アプリケーションにStruts2jQueryを使用しました。

これが私のコードです:

JSP:

 <s:form id="frm_demo" theme="simple" action="ManagersAutoCompleter1">
        <s:url var="remoteurl" action="test" />
    <sj:autocompleter href="%{remoteurl}" id="echo3" name="echo"
        list="itemList" listKey="id" listValue="name" emptyOption="true"
        headerKey="-1" headerValue="Please Select a Language" selectBox="true" />

        <s:submit value="submit" />
    </s:form>

Struts.xml

<action name="test" class="test.TestAction" method="populate">
  <result type="json">
  </result>
</action>

アクションクラス:

 public String populate() throws Exception {

        itemList = new ArrayList<ListValue>();
        itemList.add(new ListValue("Php", "Php"));
        itemList.add(new ListValue("Java", "Java"));
        itemList.add(new ListValue("Mysl", "Mysl"));
        return SUCCESS;
    } //getter setter for itemList

リストクラス:

public class ListValue {
    private String id;
    private String name;

    public ListValue(String id, String name) {
        this.id = id;
        this.name = name;
    } //getter setter methods

しかし、このStruts2jQueryautocompleterは機能していません。値は入力されません。

4

3 に答える 3

1

これは間違っています:

<sj:autocompleter href="%{remoteurl}" id="lst" name="lst"
    list="itemList" listValue="name" listKey="id" selectBox="true" />

オートコンプリートに、自分で作成したカスタムオブジェクトではなく、マップをフィードしています。

HashMapにはnamenoridフィールドがなく、代わりにsフィールドkeyvaluesフィールドがあります。

それを変更することから始めて、それが機能するかどうかを確認します。

<sj:autocompleter href="%{remoteurl}" id="lst" name="lst"
    list="itemList" listValue="value" listKey="key" selectBox="true" />
于 2013-01-04T09:43:12.250 に答える
1

参照されていない間違った属性を入力しました。

<s:url id="remoteurl" action="test" />

する必要があります

 <s:url var="remoteurl" action="test" />

リスト項目 Bean クラスを使用する

public class ListValue {
  private String id;
  private String name;
...
}

public String populate() throws Exception {
  itemList.add(new ListValue("Php", "Php"));
  itemList.add(new ListValue("Java","Java") );
  itemList.add(new ListValue("Mysl", "Mysl") );
  return SUCCESS;
}

コンストラクターとミューテーターが追加されていることを前提としています。

于 2013-01-04T11:16:09.913 に答える
1

これをやって

<s:url id="remoteurl" action="test"/>
<sj:select 
     id="customersjsonlstid" 
     name="echo"
     label="Handle a List"
     href="%{remoteurl}" 
     list="itemList"
     listValue="name" 
     listKey="id" 
     autocomplete="true"  
     loadMinimumCount="2" 
     id="echo3"/>

これの代わりに

<sj:autocompleter href="%{remoteurl}" id="echo3" name="echo"
list="itemList" listKey="id" listValue="name" emptyOption="true"
headerKey="-1" headerValue="Please Select a Language" selectBox="true" />

そして、アクション クラスからリストを返すことを確認してください。これを確認するには、IDE デバッガーまたは System.out.print などで実行します。

ex...


    -------------
    ------------
    itemList.add(new ListValue("Mysl", "Mysl") );
    System.out.println("Size of my list="+itemList.size());
    return SUCCESS;
}

また、アクションクラスでゲッターとセッターを定義する必要があります

private List itemList; 
    public List getItemList() {
    return itemList;
} 

public void setItemList(List itemList) {
    this.itemList = itemList;
}
于 2013-01-06T19:44:42.847 に答える