0

私は ajax が初めてで、あるボックスの値を別のボックスにコピーしようとしています。これが私のコードです:

 <h:form>
        <h:inputText value="#{ajaxBean.name}">
            <f:ajax render="otherbox" execute="@this" event="keyup"></f:ajax>
        </h:inputText>
        <h:inputText id="otherbox" value="#{ajaxBean.name}"></h:inputText>
 </h:form>

そして、豆

@Named(value = "ajaxBean")
@Dependent
public class AjaxBean {

public AjaxBean() {
}


private String name;

public String getName() {
    return name;
}

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

そのコードは機能しません。誰でも私を助けることができますか?

ありがとう

4

2 に答える 2

1

JSFとCDIを混同していると思います。@Dependent は、Bean が従属疑似スコープ (CDI Bean のデフォルト スコープ) にあることを示しているため、リクエストを行うたびに Bean が再インスタンス化され、Bean は状態を保持できません。スコープの説明、特に従属スコープの使用目的については、こちらを参照してください。

したがって、まず、別のスコープを使用する必要があります。タスクには @RequestScoped で十分です。また、ここでは CDI を使用していないので、@Named の代わりに @ManagedBean を使用してください。つまり、Bean のデフォルトのスコープはリクエストスコープになります。

これを試して:

@ManagedBean
public class AjaxBean {
    ...
}
于 2013-07-18T12:37:20.287 に答える