我怀疑使用php-fpm
创建selectBooleanCheckbox
。
我有一个名为ui:repeat
的班级,其中包括Filter
。
fields
所以我想知道是否可以使用class Filter {
private Boolean comissaoAdesao;
private Boolean comissaoSaque;
private Boolean comissaoSaqueAdicional;
private Boolean comissaoCompra;
private Boolean cidadeUF;
private Boolean publicidade;
// getter e setter
}
将字段链接到selectBooleanCheckbox
。
我的方法是:
ui:repeat
我的网页代码是:
if (NullUtil.isNull(this.colunasAnalitico)) {
Map<String, Boolean> map = new TreeMap<String, Boolean>() {
{
put("Comissão adesão", filter.getComissaoAdesao());
put("Comissão saque", filter.getComissaoSaque());
put("Comissão saque adicional", filter.getComissaoSaqueAdicional());
put("Comissão compra", filter.getComissaoCompra());
put("Cidade/UF", filter.getCidadeUF());
put("Publicidade", filter.getPublicidade());
}
};
this.colunasAnalitico = new ArrayList<Entry<String, Boolean>>(map.entrySet());
}
return colunasAnalitico;
答案 0 :(得分:4)
简单地说:视图必须与模型匹配。
在当前模型中,您有一堆 fixed 布尔属性,而不是动态大小的数组或布尔属性的集合。 import iAd
import UIKit
import GameKit
import SceneKit
import StoreKit
import SpriteKit
import QuartzCore
import Foundation
import AVFoundation
import AudioToolbox
//============================================================
class MainMenuController: SKScene, ADBannerViewDelegate, SKPhysicsContactDelegate, SKSceneDelegate, SCNSceneRendererDelegate, SCNPhysicsContactDelegate{
override func didMoveToView(view: SKView) {
}
只能迭代动态大小的数组或集合。在您的模型中,您事先已经知道所有可能的布尔属性。因此,您可以在视图中定义它们。从技术上讲,您根本不需要<ui:repeat>
。您<ui:repeat>
而不是value="#{someBoolean}"
的初始尝试失败的原因与解释here的技术原因相同。
给出
的示例实体value="#{bean.someBoolean}"
你可以这样做:
public class Filter {
private Boolean option1;
private Boolean option2;
private Boolean option3;
// ...
}
如果您担心非DRY代码,只需将此全部放入可重复使用的include file or perhaps even tagfile or composite中,并将<p:panelGrid columns="2">
<p:selectBooleanCheckbox id="option1" value="#{bean.filter.option1}" />
<p:outputLabel for="option1" value="Filter option one" />
<p:selectBooleanCheckbox id="option2" value="#{bean.filter.option2}" />
<p:outputLabel for="option2" value="Filter option two" />
<p:selectBooleanCheckbox id="option3" value="#{bean.filter.option3}" />
<p:outputLabel for="option3" value="Filter option three" />
</p:panelGrid>
作为值。
#{bean.filter}
如果由于某种原因您担心标签值,您需要意识到它们根本不属于模型。它们属于视图,或至少属于资源包属性文件。
<my:selectFilterOptions value="#{bean.filter}" />
filter_option.option1 = Filter option one
filter_option.option2 = Filter option two
filter_option.option3 = Filter option three
从另一方面来看,该模型的设计也很差。一堆固定布尔值最简单的重构方法是<p:outputLabel for="option1" value="#{i18n['filter_option.option1']}" />
...
<p:outputLabel for="option2" value="#{i18n['filter_option.option2']}" />
...
<p:outputLabel for="option3" value="#{i18n['filter_option.option3']}" />
。
enum
您可以简单地将它们保存在数组或集合中(数组更容易,因此您不需要JSF转换器;如果您想在public enum FilterOption {
OPTION1,
OPTION2,
OPTION3;
}
上使用JPA @ElementCollection
因此不能使用数组,请考虑OmniFaces GenericEnumConverter
)。
@Enumerated
您可以在应用程序范围内提供所有可用值。
public class Filter {
private FilterOption[] options;
// ...
}
您可以使用枚举名称作为键来本地化资源包属性文件中的标签。
@Named
@ApplicationScoped
public class Data {
public FilterOption[] getFilterOptions() {
return FilterOption.values();
}
}
因此,您最终可以使用filter_option.OPTION1 = Filter option one
filter_option.OPTION2 = Filter option two
filter_option.OPTION3 = Filter option three
代替<p:selectManyCheckbox>
。
<p:panelGrid><p:selectBooleanCheckbox>
答案 1 :(得分:1)
您的用例需要SelectManyCheckbox
查看代码,您可以使用它:
<p:selectManyCheckbox id="basic" value="#{yourBean.selectedCheckboxes}">
<f:selectItems value="#{yourBean.colunaAnalitico}" var="item" itemLabel="#{item.key}" itemValue="#{item.value}" />
</p:selectManyCheckbox>
如果需要,你甚至可以投入<ui:param name="campo" value="(what you want to do with item.value that I can't understand from your code)" />
......
答案 2 :(得分:1)
您的代码有点奇怪,请检查这是否符合您的要求:
<ui:repeat value="#{bean.map.entrySet().toArray()}" var="entry" >
<p:row>
<p:column style="width: 2%">
<p:selectBooleanCheckbox label="#{entry.key}" value="#{bean.map[entry.key]}"/>
</p:column>
<p:column>
<p:outputLabel value="#{entry.key}"/>
</p:column>
</p:row>
</ui:repeat>
bean
是您的支持bean,map
可能是TreeMap<String, Boolean>
。这对我有用,所以也适合你。
相关强>