1

私はjsfが初めてです。ajax と viewscope Bean での作業に問題がありました。

これが私のコードです:

index.xhtml:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"         
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
    <h:form>

        <h:inputText id ="text" value="#{bean2.str1}" />
        <h:inputText id ="text2" value="#{bean2.str1}" />
        <h:commandButton value="Test">
            <f:ajax execute="text" render="text2"/>
        </h:commandButton>

        <h:commandButton value="Home" action="home"/>
    </h:form>        
</h:body>
</html>

Bean2.java

package com.hem.beans;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class Bean2 implements Serializable {

public String str1;

public String getStr1() 
{
    return str1;
}
public void setStr1(String str) 
{
    str1 = str;
}
}

このページには、2 つの入力ボックスとコマンド ボタン "Test" が表示されます。最初の入力ボックスに値を入力して [テスト] をクリックしても、何も起こりません (エラーも発生しません)。

しかし、私がBeanをSessionscopedとして作成すると、正常に動作します。

これを案内してください。

4

1 に答える 1

2

..で問題なく動作するはずですが、次の方法で属性の値@ViewScopedを変更できます:すべてのフォームを送信するには:execute@form

<h:form>

    <h:inputText id ="text" value="#{bean2.str1}" /><br />
    <h:outputText id ="text2" value="#{bean2.str1}" /><br />
    <h:commandButton value="Test">
        <f:ajax execute="@form" render="text2"/>
    </h:commandButton>

    <h:commandButton value="Home" action="home"/>
</h:form>  

また、<h:outputText />別の<h:inputText />.

于 2013-09-15T11:26:23.490 に答える