2

私はJSFから始めて、次の簡単な例を機能させようとしていますが、空の長方形が表示されるだけです

JavaBeanコードは次のとおりです。

import javax.faces.model.SelectItem;
import java.util.*;

public class SItemsBean
{ 
  private List options;
  public SItemsBean() 
  {
  options = new ArrayList();
  SelectItem option = new SelectItem("ch1", "choice1", "This bean is for selectItems tag", true);
  options.add(option);
  option = new SelectItem("ch2", "choice2");
  options.add(option);
  option = new SelectItem("ch3", "choice3");
  options.add(option);
  option = new SelectItem("ch4", "choice4");
  options.add(option);
  option = new SelectItem("ch5", "choice5");
  options.add(option);
  }

   public void setOptions(List opt)
  {
   options = opt;
  }

   public List getOptions()
  {
   return options;
  }
}

xhtmlコードは次のとおりです。

<h:form>
<h:outputText value="Select choices given below :"/><br/><br/>
<h:selectManyListbox id="subscriptions" value="#{SItemsBean.options}" size="3">
<f:selectItems value="#{SItemsBean.options}" />
</h:selectManyListbox>
</h:form>

そして、faces-config.xmlに以下を追加しました。

<managed-bean>
    <managed-bean-name>sItemsBean</managed-bean-name>
    <managed-bean-class>sItemsBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
        <display-name>options</display-name>
        <property-class>java.util.List</property-class>
    </managed-property>     
</managed-bean>
4

1 に答える 1

0

問題の原因は、次の管理プロパティがあることです。

<managed-property>
    <display-name>options</display-name>
    <property-class>java.util.List</property-class>
</managed-property>     

管理プロパティは、Beanの構築後に設定されます。これは基本的にoptions空のリストでプロパティを設定するため、Beanのコンストラクターに熱心に入力したリストをオーバーライドします。

なぜそのように構成したのかはわかりませんが、の目的を誤解していると思います<managed-property>。Beanの使用可能なすべてのプロパティを「宣言」することは意図されていません。代わりに、Beanの構築後にBeanのプロパティを指定された値に設定します。

具体的な問題を解決するには、それをから削除<managed-property>ますfaces-config.xml


具体的な問題とは関係なく、適切なJSFリソースから学習していると確信していますか?これまでに投稿したコードは、古いJSF 1.xの典型的なものであり、新しいJSF2.xの機能などをまったく使用していません@ManagedBean。JSF 2.xaでは多くのことがJSF1.xとは異なる方法で(はるかに優れて)行われるため、適切なJSFリソースから学習していることを確認してください。

参照:

于 2012-09-17T11:29:02.117 に答える