【问题标题】:SyntaxError: missing } using primefaces extensions inputNumber using jquerySyntaxError: missing } using primefaces extensions inputNumber using jquery
【发布时间】:2014-11-13 15:18:33
【问题描述】:

我正在使用 PrimeFaces。我成功地使用 PrimeFaces 组件 InputText 实现了许多对话框。 为了更好地输入格式和数字验证,我查看了 PrimeFaces Extensions 的组件 InputNumber。但是当我使用这个组件时,我的对话框不会通过单击按钮打开。

经过更多的测试和研究,我可以更具体地说,问题取决于所使用的语言环境。所以像'de'或'en'这样的语言环境是可以的,但'de-ch'不行。对于“de-ch”,特殊字符撇号 ' 用作千位分隔符。

因此使用撇号作为千位或小数分隔符会产生错误。

在 Internet Explorer 11 中出现以下错误:

SCRIPT1009: '}' expected
file: jquery.js.xhtml, row: 14, column: 2888
globalEval:function(e){if(e&&bI.trim(e)){(a5.execScript||function(i){a5["eval"].call(a5,i)})(e)}},camelCase:function(e){return e.replace(bS,"ms-")

错误在 a5["eval"].call(a5,i)

在 Firefox 33.0 中出现以下错误:

SyntaxError: missing } after property list

我已将问题简化为以下代码:

inputNumber.xhtml:

<html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:h="http://java.sun.com/jsf/html"  
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:pe="http://primefaces.org/ui/extensions"  
      xmlns:p="http://primefaces.org/ui">  

    <h:head>  

    </h:head>  

    <h:body>  

        <h:form>
            <p:panelGrid columns="4">
                <p:commandButton id="btnActionListenerPinputText"
                                 value="InputText Dialog via ActionListener"
                                 actionListener="#{dtDialogView.onShowPITDialog}"/>
                <p:commandButton id="btnOnSuccessPinputText"
                                 value="InputText Dialog via OnSuccess"
                                 onsuccess="PF('pitDlg').show();"/>
                <p:commandButton id="btnOnClickPinputText"
                                 value="InputText Dialog via OnClick"
                                 onclick="PF('pitDlg').show();"/>
                <p:commandButton id="btnOnCompletePinputText"
                                 value="InputText Dialog via OnComplete"
                                 oncomplete="PF('pitDlg').show();"/>

                <p:commandButton id="btnActionListenerPEinputNumber"
                                 value="InputNumber Dialog via ActionListener"
                                 actionListener="#{dtDialogView.onShowPEINDialog}"/>
                <p:commandButton id="btnOnSuccessPEinputNumber"
                                 value="InputNumber Dialog via OnSuccess"
                                 onsuccess="PF('peinDlg').show();"/>
                <p:commandButton id="btnOnClickPEinputNumber"
                                 value="InputNumber Dialog via OnClick"
                                 onclick="PF('peinDlg').show();"/>
                <p:commandButton id="btnOnCompletePEinputNumber"
                                 value="InputNumber Dialog via OnComplete"
                                 oncomplete="PF('peinDlg').show();"/>
            </p:panelGrid>
        </h:form>

        <!-- primefaces inputText dialog -->
        <h:form id="form-dlgpit">
            <p:dialog id="dlgpit"
                      header="PrimeFaces Input Text"
                      widgetVar="pitDlg"
                      resizable="false"
                      dynamic="true"
                      modal="true">

                <h:outputText id="amount_label" value="Amount"/>
                <p:inputText id="amount_value" value="#{dtDialogView.amount}" />

                <p:commandButton id="btnPitSave"
                                 value="Save"
                                 oncomplete="{PF('pitDlg').hide();}"/>
            </p:dialog>
        </h:form>

        <!-- primefaces extensions inputNumber dialog -->
        <h:form id="form-dlgpein">
            <p:dialog id="dlgpein"
                      header="PrimeFaces Extensions Input Number"
                      widgetVar="peinDlg"
                      resizable="false"
                      dynamic="true"
                      modal="true">

                <h:outputText id="amount_label" value="Amount"/>
                <pe:inputNumber id="amount_value" value="#{dtDialogView.amount}"
                                thousandSeparator="'"
                                decimalSeparator="."/>

                <p:commandButton id="btnPeinSave"
                                 value="Save"
                                 oncomplete="{PF('peinDlg').hide();}"/>
            </p:dialog>
        </h:form>
    </h:body>  
</html>  

DialogView.java

@ManagedBean(name = "dtDialogView")
@ViewScoped
public class DialogView implements Serializable {

    private Long amount;


    public Long getAmount() {
        return amount;
    }


    public void setAmount(Long amount) {
        this.amount = amount;
    }


    public void onShowPITDialog() {
        RequestContext.getCurrentInstance().execute("PF('pitDlg').show();");
    }


    public void onShowPEINDialog() {
        RequestContext.getCurrentInstance().execute("PF('peinDlg').show();");
    }
}

我使用的环境:

  • PrimeFaces 5.1.3
  • PrimeFaces 扩展 3.0.0
  • Tomcat 8.0.14
  • Java 服务器端 2.2

【问题讨论】:

  • 我做了更多的测试和研究并修改了描述
  • 此错误是 PrimeFaces Extensions InputNumber 中的一个未解决问题,请查看link

标签: javascript jquery apostrophe primefaces-extensions


【解决方案1】:

在 PrimeFaces Extensions 修复之前,请检查 PrimeFaces Extensions 问题跟踪器中的link,并在 XHTML 代码中使用反斜杠转义撇号。

                <pe:inputNumber id="amount_value" value="#{dtDialogView.amount}"
                            thousandSeparator="\'"
                            decimalSeparator="."/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 2015-10-13
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多