1
我想弄清楚是否應該使用列表或數組與JSF。 我知道它同時接受,但我也想效率。JSF是否將List或Array用於內部使用?
我指的是哪裏列表/陣列傳遞給JSF,例如實例:
<ui:repeat value="#{bean.array}" />
謝謝!
我想弄清楚是否應該使用列表或數組與JSF。 我知道它同時接受,但我也想效率。JSF是否將List或Array用於內部使用?
我指的是哪裏列表/陣列傳遞給JSF,例如實例:
<ui:repeat value="#{bean.array}" />
謝謝!
JSF不會轉換任何東西。兩者同樣得到很好的支持。 JSF會將這個值包裝在合適的DataModel
實現中,以跟蹤迭代的行。另見的UIRepeat
的源代碼(下面是鑽嘴魚科):
private DataModel getDataModel() {
if (this.model == null) {
Object val = this.getValue();
if (val == null) {
this.model = EMPTY_MODEL;
} else if (val instanceof DataModel) {
this.model = (DataModel<Object>) val;
} else if (val instanceof List) {
this.model = new ListDataModel<Object>((List<Object>) val);
} else if (Object[].class.isAssignableFrom(val.getClass())) {
this.model = new ArrayDataModel<Object>((Object[]) val);
} else if (val instanceof ResultSet) {
this.model = new ResultSetDataModel((ResultSet) val);
} else {
this.model = new ScalarDataModel<Object>(val);
}
}
return this.model;
}
只要選擇任何值類型是最好的和最簡單的維護。配置文件,如果需要普通數組的內存佔用量較小,但它們也很難維護(例如,添加/刪除項目應該發生在System#arrayCopy()
之間)。這可能只對靜態集合有意義,但對於動態集合不是。
如果你想要去的過早的優化,那麼你可能不應該是使用JSF所有,但只是普通的香草JSP/Servlet和與原語和普通陣列只工作:)
內存目前很便宜,雖然。
我不會擔心它。如果存在性能差異,則可以忽略不計。使用最適合您需求的數據結構。 –
@GaryBuyn是的......但是如果JSF實際上從一種類型的容器轉換爲另一種,並且尺寸很大,那麼可能會花費一大堆錢來轉換它。 – Ben
它可能會使用[model]來調整值(http://download.oracle.com/docs/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/api/javax/faces/model/package-summary .html)類型。 – McDowell