0

(この質問は難しいですが、まだ解決できませんでした)<div>タグを使用してさまざまな値を表示している製品カタログがあります。ユーザーが選択した製品を買い物かごに追加するためのボタンがあるはずですが、そうではありません。 ProductsIDをJavaクラスに送信することを知っています。

 Name:ProductA     Name:ProductB 
 Price:3.5         Price:5.0
 Add               Add

JSP/struts2の私のコードは次のとおりです。

これは、値を受け取ることでタグにFriend.nameを入力するフォームです。

<sx:div>
   <div id="Name">name:${Friend.name}</div>
   <s:form action="myMethod" >
     <s:submit/>
   </s:form>
</sx:div>

ユーザーが送信をクリックすると、必要なクラスに移動し、11行目が実行されますが、「name is:null」が表示されます。

private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String myMethod() {
Line 11  System.out.println("in mymethod");  // output is : mymethod
     System.out.println("The name is:" + this.name); // output is: the name is: null
     return "SUCCESS";
}

jspコードがAJAXタグに含まれているために発生したかどうかはわかりませんが、問題の原因となっている別の問題があります。

使っている時のように変です

 <s:textfield name="Name" label="Name" /> 

そして、それを受け入れる入力を入力し、this.nameを使用して値を表示します!!

別の例HTMLおよびJSP(新しいバージョン)コードは次のとおりです。

  <s:form action="AddProduct" >
     <tr><td><div id="image"><img src=${Product.thumbNailUrl} alt="image"/></div></td></tr>
       <s:textfield name="Name" label="Name" />  
     <tr><td><div id="Name">Here:${Product.name}</div></td></tr>
     <s:hidden id="Name1" value="name1">${Product.name}</s:hidden>
     <s:label id="name2" name="name2" value="John"/>
     <tr><td><div id="Rate:">Rate:${Product.highRate}</div></td></tr>
     <tr><td><div id="Address">Address:${Product.address}</div></td></tr>
     <tr><td>
                  <s:submit/>
    </s:form>

** * ** * HTML * *

  <tr><td><div id="Name">Here:Beaufort</div></td></tr>
     Beaufort<input type="hidden" name="" value="name1" id="Name1"/>
     <tr>
         <td class="tdLabel"></td>
         <td><label id="name2">John</label></td>
     </tr>

     <tr><td><div id="Rate:">Rate:437.19</div></td></tr>
     <tr><td><div id="Address">Address:33 Beaufort</div></td></tr>
     <tr><td>
                  <tr>

      <td colspan="2"><div align="right"><input type="submit" id="AddProduct_0" 
       value="Submit"/>
      </div></td>
       </tr>

    </table></form>
4

2 に答える 2

2

あなたがどれだけ経験を積んでいるかはわかりませんがstruts、あなたの質問には本当に簡単な解決策があると思います。

まず、フォームが必要です。このフォームには、クラスに渡す必要のあるものがすべて含まれている必要があります。( sを初めて使用する場合formは、少しグーグルでさまざまなチュートリアルを見つけてください

次に、フォームのaction処理を担当するJavaクラスにフォームを設定します。(あなたがチュートリアルcontrollersのために少しグーグルstrutsに不慣れであるならば)

第三に、そのクラスでは、入力を受け取り、必要に応じて実行します。


更新しました

私たちは(一種の)同じような状況にあります。利用可能な2つのオプションがあります。

1つは非表示フィールドがあり、そこにIDがあります(非表示フィールドまたは単にページに表示されない)ので、オブジェクトが選択されるたびにIDも送信されます。

2つはhibernateの第2レベルのキャッシュを使用し、hibernateを使用してそれを取得します。メソッドを使用loadして、そのキャッシュからIDを取得します。

なぜレベル2なのか?DBを照会せず、より効率的であるためです。

于 2012-10-09T13:15:21.100 に答える
1

ビュー(html)にカタログを入力するときは常に、対応する製品のproductIdを格納する非表示フィールドを保持する必要があります。そのため、ユーザーが商品をショッピングカートに追加するたびに、その商品のIDを簡単に取得してサーバーに送信できます。

于 2012-10-09T13:17:36.070 に答える