1

クラス counterBean があり、jsp で counterBean の 2 つのインスタンスをインスタンス化したいと考えています (2 つの個別のカウンター用)。どうすればいいですか?

編集 - コードを追加

package beans;

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

@ManagedBean(name="CounterBean")
@SessionScoped
public class CounterBean implements Serializable
{
    private static final long serialVersionUID = 1L;
    private static int hitCount;

    public CounterBean() 
    {
        CounterBean.hitCount = 0;
    }

    public static int getCounter() 
    {
        hitCount++;
        return hitCount;
    }

    public static void setCounter(int hitCount) 
    {
        CounterBean.hitCount = hitCount;
    }

    public static int getValue() 
    {
        return hitCount;
    }
}
4

3 に答える 3

1

JSP のコードで直接オブジェクトを作成しない方がよいでしょう。JSPはビューのみである必要があるため。JSP ページでスクリプトレットを使用することはお勧めできません。<jsp:useBean>次のタグを使用することをお勧めします。

<jsp:useBean id="firstCounterId' class="yourpackagename.CounterBean" />
<jsp:useBean id="secondCounterId' class="yourpackagename.CounterBean" />

特定のカウンターの値を変更するには、タグを適用します<jsp:set Property>

<jsp:setProperty name="firstCounterId" property="myNumber" value="123"/>

<c:set>しかし、JSP から Bean を変更して使用する際の問題のほとんどは、タグとタグを使用することで解決できると思います。<c:out>

于 2012-04-29T17:56:32.940 に答える
0

通常の方法でカウンター Bean を作成します。

@Named(value="counterBean")
@SessionScoped
public class CounterBeanClass implements Serializable {

    private int counter = 0;

    public CounterBeanClass() {
    }

    public int getCounter() {
        return counter;
    }

    public void setCounter(int counter) {
        this.counter = counter;
    }

    public String addCounterValue() {
        this.counter++;
        return "";
    }
}

次に、faces-config.xml ファイルで新しいマネージド Bean を作成または追加します。

<managed-bean>
    <managed-bean-name>anotherCounterBean</managed-bean-name>
    <managed-bean-class>my.backingbean.CounterBeanClass</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

これで、両方のカウンターを分離された Bean として呼び出すことができます。

<h:form>
    <h:panelGrid columns="2">
        <h:outputText value="Counter 1" />
        <h:outputText value="#{counterBean.counter}" />
        <h:outputText value="Counter 2" />
        <h:outputText value="#{anotherCounterBean.counter}" />
        <h:commandButton value="Add Counter 1"
            action="#{counterBean.addCounterValue}" />
        <h:commandButton value="Add Counter 2"
            action="#{anotherCounterBean.addCounterValue}" />
    </h:panelGrid>
</h:form>
于 2012-04-29T18:09:51.950 に答える
-1

どうですか

CounterBean cb1 = new CounterBean();
CounterBean cb2 = new CounterBean();
于 2012-04-29T17:54:14.703 に答える