0

手伝っていただけませんか。このリクエストをマネージド Bean スコープで作成したのですが、sayHello をクリックすると、ログのコンソールに「chaine」フィールドに値を入力しても、hello しか表示されません。

public class BackTheme {


private String chaine;

public BackTheme() {

}

public void sayHello(){
    System.out.println("hello "+chaine);
}

public String getChaine() {
    return chaine;
}

public void setChaine(String chaine) {
    this.chaine = chaine;
}
}

HTML コードは次のようになります。

<div class="gt-form gt-content-box"> 
    <h:inputText  value="#{backTheme.chaine}" />
    <h:form >        
     <a4j:htmlCommandLink actionListener="#{backTheme.sayHello}" value="Download"/>
    </h:form>

4

2 に答える 2

2

フォームが送信されると、フォームに含まれるデータのみが送信されます。ただし、入力コンポーネントはフォームの外部にあるため、その値はフォーム送信に反映されません。その値をサーバーにも送信する場合は、入力コンポーネントをコマンドボタン/リンクと同じ形式にする必要があります。

<h:form>        
  <h:inputText value="#{backTheme.chaine}" />
  <a4j:htmlCommandLink actionListener="#{backTheme.sayHello}" value="Download"/>
</h:form>

具体的な問題とは関係なく、このすべての具体的な機能要件が何であるかはわかりませんが、ajaxを使用して個々のファイルをダウンロードすることはできないことを警告するだけです。コマンドリンクには「download」というラベルが付いています。これは、実際のコードでファイルをダウンロードしようとしていることを示しています。おそらくこれは単なる不注意ですが、あなたは決して知りません。言ってるだけ'。その場合は、ファイルのダウンロードを成功させるために、<a4j:htmlCommandLink>をに置き換えてください。JSFバッキングBeanからファイルをダウンロードする方法<h:commandLink>も参照してください。

于 2013-02-25T19:42:52.307 に答える
1

inputTextはフォームにある必要があります。

于 2013-02-25T19:43:55.417 に答える