如何在应用程序级别对Primefaces SelectOneMenu进行双引号转义?

时间:2019-05-29 20:13:07

标签: jsf primefaces

使用PrimeFaces,当itemLabel的{​​{1}}的内容具有双引号(“)时,p:selectOneMenu停止工作(无法选择该项目)。 例如,在下面的代码中无法选择:项目“ 2”

是否有一种方法可以从整个应用程序中转义或替换每个selectOneMenu中的双引号?

也许使用标签装饰器或标签处理程序?

selectOneMenu
@Named(value = "bb")
@ViewScoped
@Getter @Setter
public class BB implements Serializable {

    List<String> items;
    String selectedItem;

    @PostConstruct
    public void init() {
        items = new ArrayList<>();
        items.add("Item 1");
        items.add("Item \"2\""); // <= note the double quotes here.
        items.add("Item 3");
    }

    public void logSelected() {
        System.out.println(selectedItem);
    }
}

当我尝试选择“项目“ 2””时,控制台日志上显示以下错误:

    <h:form>
        <p:selectOneMenu value="#{bb.selectedItem}">
            <f:selectItems value="#{bb.items}"/>
        </p:selectOneMenu>

        <p:commandButton action="#{bb.logSelected}"
                         process="@form"
                         update="@form"
                         value="GO"/>
    </h:form>

1 个答案:

答案 0 :(得分:1)

已在PrimeFaces 7.0中进行了验证。

但是,根据所应用的修复程序,它也可能已在6.2.X中修复。

6.2.9:https://github.com/primefaces/primefaces/issues/3982

7.0:https://github.com/primefaces/primefaces/issues/3466