0

私はプロジェクトに取り組んでおり、JSF にあまり詳しくないので、この質問のギャップを修正してください。

ドメインの値を保持するプロパティファイルがあります...たとえば

domain=.com
domain=.net

私のBeanにはこれがあります

private String domain;
private String[] domainSelection;

public void initProp(){

   try {
      Configuration config = new PropertiesConfiguration("prop.properties");
      domainSelection = config.getStringArray("domain");

   } catch (ConfigurationException e) {
      Log.error("Error");
   }

}

.jsp私が持っているJSFのページで

<rich:select id="domain" value="#{Bean.domain}"                                               
      required="true">
     <f:selectItems itemValue="#{Bean.domainSelection}" />
</rich:select>

これをデバッグすると、domainSelection に 2 つの値が表示されますが、それらを JSF に渡す必要があり、その方法がわかりません。

4

1 に答える 1

1

最初の回答で申し訳ありませんが、質問を完全に見逃しました。

private List<SelectItem> domains = new ArrayList<SelectItem>();
//for each domain
domains.add("com",firstFromDomainSelection);
domains.add("net",secondFromDomainSelection);

<f:selectItems value="#{Bean.domains}" />

したがって、これにはgetDomainsそれらを取得する必要があります。

編集:

プロパティファイルをもう一度読む限り、実行可能だと思います。注意すべきことの 1 つは、ファイルが.war既に存在している可能性があることです。そのため、展開されたフォルダーにファイルを再追加するか、単に追加する方法を考え出す必要があります。

ビューが呼び出すリストを取得するgetDomains()たびに、呼び出されるたびにプロパティをプルするロジックが必要です。ファイル IO が原因で、パフォーマンスがわずかに低下する可能性があります。

private List<SelectItem> domains;
private Configuration config = new PropertiesConfiguration("prop.properties"); // with accessors

public List<SelectItem> getDomains(){
  domains = new ArrayList<SelectItem>();
  String[]  domainSelection = getConfig().getStringArray("domain");
  for(String domain : domainSelection ){
     //Define desired logic for the value if its the same (.com) pass the same as value
     domains.add( new SelectItem(domain ,domain)); // SelectItem(value, label);
  }
  return domains;
}

私がすること

プロパティ ファイルを使用する代わりに、ドメインのテーブルを使用し、それらのレコードをテーブルに動的に追加するだけで、それに応じて取得されます。そのビューに多くのリクエストがある場合、おそらく速度が遅くなります--少なくともわずかに。留意すべきもう 1 つの問題は、apache がそれらのファイルをキャッシュするかどうかです。それを覚えておいてください。IMO では、db テーブルを使用する方が安全です。

于 2012-10-15T16:09:03.440 に答える