1

我有一个类 counterBean,我希望在我的 jsp 中实例化两个 counterBean 实例(用于两个单独的计数器)。我该怎么做?

编辑 - 添加代码

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 页面中使用 scriptlet 不是好的做法。最好使用<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"/>

但我认为几乎所有从 JSP 更改和使用 bean 的问题都可以通过使用标签<c:set><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 回答