简体   繁体   English

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

[英]How to escape double quotes for Primefaces SelectOneMenu in Application level?

Using PrimeFaces, when the content of itemLabel of a p:selectOneMenu has the char double quote ("), the selectOneMenu stop working (can't select the item). For example, in the code below is not possible to select: Item "2"使用PrimeFaces,当p:selectOneMenuitemLabel内容有char 双引号(") 时, selectOneMenu停止工作(不能select item)。例如,在下面的代码中是不可能select: Item " 2"

Is there a way to escape or replace the double quotes in every selectOneMenu from the entire application?有没有办法从整个应用程序中转义或替换每个selectOneMenu中的双引号?

Maybe using a tag decorator or a tag handler?也许使用标签装饰器或标签处理程序?

@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);
    }
}
    <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>

When I try to select 'Item "2"', the following error is shown on console log:当我尝试 select 'Item "2"' 时,控制台日志中显示以下错误:

Uncaught Error: Syntax error, unrecognized expression: [data-label="Item "2""]
    at Function.ga.error (eNptjUsOgzAMRE9E2XMbEwwkcmxjJ6qQenh-i6qF1UhvnmbUYsYRAnqXloq2tle8kn_02wUxvKGswsjF_4qfnUapTpFPp1KJGRqCVWrpkrcMLB5MiNAeBX9HPX9n8HmAAgecSHqgnW7lbUr_.js.xhtml?ln=omnifaces.combined&v=1558274343370:2)
    at ga.tokenize (eNptjUsOgzAMRE9E2XMbEwwkcmxjJ6qQenh-i6qF1UhvnmbUYsYRAnqXloq2tle8kn_02wUxvKGswsjF_4qfnUapTpFPp1KJGRqCVWrpkrcMLB5MiNAeBX9HPX9n8HmAAgecSHqgnW7lbUr_.js.xhtml?ln=omnifaces.combined&v=1558274343370:2)
    at ga.compile (eNptjUsOgzAMRE9E2XMbEwwkcmxjJ6qQenh-i6qF1UhvnmbUYsYRAnqXloq2tle8kn_02wUxvKGswsjF_4qfnUapTpFPp1KJGRqCVWrpkrcMLB5MiNAeBX9HPX9n8HmAAgecSHqgnW7lbUr_.js.xhtml?ln=omnifaces.combined&v=1558274343370:2)
    at ga.select (eNptjUsOgzAMRE9E2XMbEwwkcmxjJ6qQenh-i6qF1UhvnmbUYsYRAnqXloq2tle8kn_02wUxvKGswsjF_4qfnUapTpFPp1KJGRqCVWrpkrcMLB5MiNAeBX9HPX9n8HmAAgecSHqgnW7lbUr_.js.xhtml?ln=omnifaces.combined&v=1558274343370:2)
    at ga (eNptjUsOgzAMRE9E2XMbEwwkcmxjJ6qQenh-i6qF1UhvnmbUYsYRAnqXloq2tle8kn_02wUxvKGswsjF_4qfnUapTpFPp1KJGRqCVWrpkrcMLB5MiNAeBX9HPX9n8HmAAgecSHqgnW7lbUr_.js.xhtml?ln=omnifaces.combined&v=1558274343370:2)
    at Function.ga.matches (eNptjUsOgzAMRE9E2XMbEwwkcmxjJ6qQenh-i6qF1UhvnmbUYsYRAnqXloq2tle8kn_02wUxvKGswsjF_4qfnUapTpFPp1KJGRqCVWrpkrcMLB5MiNAeBX9HPX9n8HmAAgecSHqgnW7lbUr_.js.xhtml?ln=omnifaces.combined&v=1558274343370:2)
    at Function.r.filter (eNptjUsOgzAMRE9E2XMbEwwkcmxjJ6qQenh-i6qF1UhvnmbUYsYRAnqXloq2tle8kn_02wUxvKGswsjF_4qfnUapTpFPp1KJGRqCVWrpkrcMLB5MiNAeBX9HPX9n8HmAAgecSHqgnW7lbUr_.js.xhtml?ln=omnifaces.combined&v=1558274343370:2)
    at E (eNptjUsOgzAMRE9E2XMbEwwkcmxjJ6qQenh-i6qF1UhvnmbUYsYRAnqXloq2tle8kn_02wUxvKGswsjF_4qfnUapTpFPp1KJGRqCVWrpkrcMLB5MiNAeBX9HPX9n8HmAAgecSHqgnW7lbUr_.js.xhtml?ln=omnifaces.combined&v=1558274343370:2)
    at r.fn.init.filter (eNptjUsOgzAMRE9E2XMbEwwkcmxjJ6qQenh-i6qF1UhvnmbUYsYRAnqXloq2tle8kn_02wUxvKGswsjF_4qfnUapTpFPp1KJGRqCVWrpkrcMLB5MiNAeBX9HPX9n8HmAAgecSHqgnW7lbUr_.js.xhtml?ln=omnifaces.combined&v=1558274343370:2)
    at c.setLabel (eNptjUsOgzAMRE9E2XMbEwwkcmxjJ6qQenh-i6qF1UhvnmbUYsYRAnqXloq2tle8kn_02wUxvKGswsjF_4qfnUapTpFPp1KJGRqCVWrpkrcMLB5MiNAeBX9HPX9n8HmAAgecSHqgnW7lbUr_.js.xhtml?ln=omnifaces.combined&v=1558274343370:38)

Verified as fixed in PrimeFaces 7.0.经验证已在 PrimeFaces 7.0 中修复。

However, it may also be fixed in 6.2.X depending on which fix was applied.但是,它也可能在 6.2.X 中得到修复,具体取决于应用了哪个修复程序。

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

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

It appears this isse was reintroduced in PrimeFaces 10.0.0 and fixed in version 10.0.9:看来这个问题在 PrimeFaces 10.0.0 中重新引入并在版本 10.0.9 中修复:

10.0: https://github.com/primefaces/primefaces/issues/7878 10.0: https://github.com/primefaces/primefaces/issues/7878

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM