Java JSF错误消息和程序被卡住。JSON解析错误和primefaces

Java JSF错误消息和程序被卡住。JSON解析错误和primefaces,java,jsf,primefaces,facelets,Java,Jsf,Primefaces,Facelets,我在facelets中有以下表单: <h:form styleClass="registrationForm"> <h:panelGrid columns="3" cellpadding="5" style="width:600px"> <h:outputLabel for="registerLogin" styleClass="registerLabel" value="Логин: " />

我在facelets中有以下表单:

 <h:form styleClass="registrationForm">
            <h:panelGrid columns="3" cellpadding="5" style="width:600px">

                <h:outputLabel for="registerLogin" styleClass="registerLabel" value="Логин: " />
                <p:inputText id="registerLogin" styleClass="registerText" value="#{register.login}" 
                            required="true" requiredMessage="Введите Логин" />  
                <h:panelGrid width="200">
                    <p:message for="registerLogin" />   
                </h:panelGrid>

                <h:outputLabel for="registrationPassword" styleClass="registerLabel" value="Пароль: " />
                <p:password id="registrationPassword"  styleClass="registerText" feedback="true" promptLabel="Введите пароль" weakLabel="Слабый пароль"  
                            goodLabel="Нормальный пароль" strongLabel="Сложный пароль" value="#{register.password}" 
                            required="true" requiredMessage="Введите Пароль" /> 
                <h:panelGrid width="200">
                    <p:message for="registrationPassword" />    
                </h:panelGrid>              

                <h:outputLabel for="registrationMail" styleClass="registerLabel" value="Адрес эл. почты: " />
                <p:inputText id="registrationMail"  styleClass="registerText" value="#{register.email}" 
                        required="true" requiredMessage="Введите Адрес Почты" >
                    <f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
                </p:inputText>
                <h:panelGrid width="200">
                    <p:message for="registrationMail" />        
                </h:panelGrid>                               

                <h:outputLabel for="registrationSex" styleClass="registerLabel" value="Пол: " />
                <p:selectOneRadio id="registrationSex" value="#{register.sex}">
                    <f:selectItem itemLabel="М" itemValue="male" />
                    <f:selectItem itemLabel="Ж" itemValue="female" />           
                </p:selectOneRadio>             
                <h:outputText value="" />

                <h:outputLabel for="registrationName" styleClass="registerLabel" value="Отображаемое имя: " />
                <p:inputText id="registrationName"  styleClass="registerText" value="#{register.name}" 
                        required="true" requiredMessage="Ведите Имя" />
                <h:panelGrid width="200">
                    <p:message for="registrationName" />            
                </h:panelGrid>              

                <h:outputLabel for="registrationCalendar" styleClass="registerLabel" value="Дата рождения: " />
                <p:calendar id="registrationCalendar" size="24" navigator="true" yearRange="-68" 
                                locale="ru" effect="explode" value="#{register.birthdate}" 
                                required="true" requiredMessage="Введите Дату Рождения" />   
                <h:panelGrid width="200">
                    <p:message for="registrationCalendar" />            
                </h:panelGrid>                          

                <h:outputLabel for="registrationConfirm" styleClass="registerLabel" value="" />
                <p:commandButton id="registrationConfirm" value="Зарегистрироваться" styleClass="registerButton" 
                                actionListener="#{register.processRegistration}" update=":loginField :content :title" onclick="changeHeader()" />

            </h:panelGrid>  
        </h:form>
没什么可疑的

PPS。从服务器返回以下响应:

<?xml version='1.0' encoding='UTF-8'?>
<partial-response><changes><update id="loginField"><![CDATA[<div id="loginField">
<form id="j_idt12" name="j_idt12" method="post" action="/EnglishOnline/index.jsf" class="login_form" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="j_idt12" value="j_idt12" />
<span id="j_idt12:j_idt13"></span><script id="j_idt12:j_idt13_s" type="text/javascript">$(function(){PrimeFaces.cw('Growl','widget_j_idt12_j_idt13',{id:'j_idt12:j_idt13',sticky:false,life:1500,escape:true,msgs:[]});});</script><label for="j_idt12:login">
Логин: </label><input id="j_idt12:login" name="j_idt12:login" type="text" value="" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all login_field" /><script id="j_idt12:login_s" type="text/javascript">PrimeFaces.cw('InputText','widget_j_idt12_login',{id:'j_idt12:login'});</script><label for="j_idt12:password">
Пароль: </label><input id="j_idt12:password" name="j_idt12:password" type="password" class="ui-inputfield ui-password ui-widget ui-state-default ui-corner-all login_field" /><script id="j_idt12:password_s" type="text/javascript">$(function(){PrimeFaces.cw('Password','widget_j_idt12_password',{id:'j_idt12:password'});});</script><button id="j_idt12:j_idt16" name="j_idt12:j_idt16" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only login_button" onclick="PrimeFaces.ab({source:'j_idt12:j_idt16',update:'loginField'});return false;" type="submit"><span class="ui-button-text">Войти</span></button><script id="j_idt12:j_idt16_s" type="text/javascript">PrimeFaces.cw('CommandButton','widget_j_idt12_j_idt16',{id:'j_idt12:j_idt16'});</script>
</form><a id="j_idt20" href="#" class="ui-commandlink register_link" onclick="changeHeader();PrimeFaces.ab({source:'j_idt20',update:'content title'});return false;">Регистрация</a></div>]]></update><update id="title"><![CDATA[<span id="title">Регистрация</span>]]></update><update id="content"><![CDATA[<span id="content"><div class="registrationPanel">
<form id="registrationForm" name="registrationForm" method="post" action="/EnglishOnline/index.jsf" class="registrationForm" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="registrationForm" value="registrationForm" />
<table cellpadding="5">
<tbody>
<tr>
<td><label for="registrationForm:registrationLogin" class="registerLabel">
Логин: </label></td>
<td><input id="registrationForm:registrationLogin" name="registrationForm:registrationLogin" type="text" value="" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all ui-state-error registerText" /><script id="registrationForm:registrationLogin_s" type="text/javascript">PrimeFaces.cw('InputText','widget_registrationForm_registrationLogin',{id:'registrationForm:registrationLogin'});</script></td>
</tr>
<tr>
<td><label for="registrationForm:registrationPassword" class="registerLabel">
Пароль: </label></td>
<td><input id="registrationForm:registrationPassword" name="registrationForm:registrationPassword" type="password" class="ui-inputfield ui-password ui-widget ui-state-default ui-corner-all registerText" /><script id="registrationForm:registrationPassword_s" type="text/javascript">$(function(){PrimeFaces.cw('Password','widget_registrationForm_registrationPassword',{id:'registrationForm:registrationPassword',feedback:true,inline:false,promptLabel:'Введите пароль',weakLabel:'Слабый пароль',goodLabel:'Нормальный пароль',strongLabel:'Сложный пароль'});});</script></td>
</tr>
<tr>
<td><label for="registrationForm:registrationMail" class="registerLabel">
Адрес эл. почты: </label></td>
<td><input id="registrationForm:registrationMail" name="registrationForm:registrationMail" type="text" value="" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all registerText" /><script id="registrationForm:registrationMail_s" type="text/javascript">PrimeFaces.cw('InputText','widget_registrationForm_registrationMail',{id:'registrationForm:registrationMail'});</script></td>
</tr>
<tr>
<td><label for="registrationForm:registrationSex" class="registerLabel">
Пол: </label></td>
<td><table id="registrationForm:registrationSex" class="ui-selectoneradio ui-widget"><td><div class="ui-radiobutton ui-widget"><div class="ui-helper-hidden-accessible"><input id="registrationForm:registrationSex:0" name="registrationForm:registrationSex" type="radio" value="male" /></div><div class="ui-radiobutton-box ui-widget ui-corner-all ui-radiobutton-relative ui-state-default"><span class="ui-radiobutton-icon"></span></div></div></td><td><label for="registrationForm:registrationSex:0">М</label></td><td><div class="ui-radiobutton ui-widget"><div class="ui-helper-hidden-accessible"><input id="registrationForm:registrationSex:1" name="registrationForm:registrationSex" type="radio" value="female" checked="checked" /></div><div class="ui-radiobutton-box ui-widget ui-corner-all ui-radiobutton-relative ui-state-default ui-state-active"><span class="ui-radiobutton-icon ui-icon ui-icon-bullet"></span></div></div></td><td><label for="registrationForm:registrationSex:1">Ж</label></td></table><script id="registrationForm:registrationSex_s" type="text/javascript">$(function(){PrimeFaces.cw('SelectOneRadio','widget_registrationForm_registrationSex',{id:'registrationForm:registrationSex'});});</script></td>
</tr>
<tr>
<td><label for="registrationForm:registrationName" class="registerLabel">
Отображаемое имя: </label></td>
<td><input id="registrationForm:registrationName" name="registrationForm:registrationName" type="text" value="" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all registerText" /><script id="registrationForm:registrationName_s" type="text/javascript">PrimeFaces.cw('InputText','widget_registrationForm_registrationName',{id:'registrationForm:registrationName'});</script></td>
</tr>
<tr>
<td><label for="registrationForm:registrationCalendar" class="registerLabel">
Дата рождения: </label></td>
<td><span id="registrationForm:registrationCalendar"><input id="registrationForm:registrationCalendar_input" name="registrationForm:registrationCalendar_input" type="text" class="ui-inputfield ui-widget ui-state-default ui-corner-all" size="24" /></span><script id="registrationForm:registrationCalendar_s" type="text/javascript">$(function(){PrimeFaces.cw('Calendar','widget_registrationForm_registrationCalendar',{id:'registrationForm:registrationCalendar',popup:true,locale:'ru',dateFormat:'dd.mm.y',yearRange:'-68',changeMonth:true,changeYear:true,showAnim:'explode',duration:'normal'});});</script></td>
</tr>
<tr>
<td><label for="registrationForm:registrationConfirm" class="registerLabel">
</label></td>
<td><button id="registrationForm:registrationConfirm" name="registrationForm:registrationConfirm" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only registerButton" onclick="PrimeFaces.ab({source:'registrationForm:registrationConfirm',process:'registrationForm',update:'loginField content title registrationForm'});return false;" type="submit"><span class="ui-button-text">Зарегистрироваться</span></button><script id="registrationForm:registrationConfirm_s" type="text/javascript">PrimeFaces.cw('CommandButton','widget_registrationForm_registrationConfirm',{id:'registrationForm:registrationConfirm'});</script></td>
</tr>
</tbody>
</table>
<div id="registrationForm:j_idt46" class="ui-message-error ui-widget ui-corner-all"><span class="ui-message-error-icon"></span><span class="ui-message-error-detail">registrationForm:registrationLogin: Validation Error: Value is required.</span></div>
</form></div></span>]]></update><update id="javax.faces.ViewState"><![CDATA[-7975648054570174914:1199185624285089158]]></update><extension ln="primefaces" type="args">{"validationFailed":true}</extension><extension ln="primefaces" type="args">{"validationFailed":true}</extension></changes></partial-response>

$(function(){PrimeFaces.cw('Growl','widget_j_idt12_j_idt13',{id:'j_idt12:j_idt13',sticky:false,life:1500,escape:true,msgs:[]});
ЛГцц:PrimeFaces.cw('InputText','widget_j_idt12_login',{id:'j_idt12:login'});
ПаСа:$(函数(){PrimeFaces.cw('Password','widget_j_idt12_Password',{id:'j_idt12:Password'});});jbццццjprimefaces.cw('CommandButton','widget_ju idt12_ju idt16',{id:'j_idt12:j_idt16'});
]]>Регистрация]]>
Логин: 
cw('InputText','widget\u registrationForm\u registrationLogin',{id:'registrationForm:registrationLogin'});
Пароль: 
$(function(){PrimeFaces.cw('Password','widgetаu registrationFormаu registrationPassword',{id:'registrationForm:registrationPassword',反馈:true,内联:false,promptabel:'Сааааааааааааааааааааа;
Адрес эл. почты: 
cw('InputText','widget\u registrationForm\u registrationMail',{id:'registrationForm:registrationMail'});
Пол: 
МЖ$(function(){PrimeFaces.cw('SelectOneRadio','widget_registrationForm_registrationSex',{id:'registrationForm:registrationSex'});});
Отображаемое имя: 
cw('InputText','widget\u registrationForm\u registrationName',{id:'registrationForm:registrationName'});
Дата рождения: 
$(function(){PrimeFaces.cw('Calendar','widget_registrationForm_registrationCalendar',{id:'registrationForm:registrationCalendar',popup:true,locale:'ru',dateFormat:'dd.mm.y',yearRange:'-68',changemount true,changeYear:true,showAnim:'explode',duration:'normal});
3jааааааааааааааааааааа107;
注册表单:注册登录:验证错误:需要值。
]]>{“validationFailed”:true}{“validationFailed”:true}
p{3,}S.如果我们看一下这一行:

<extension ln="primefaces" type="args">{"validationFailed":true}</extension>
<extension ln="primefaces" type="args">{"validationFailed":true}</extension>
{“validationFailed”:true}
{“validationFailed”:true}
应该叫两次吗?这是不是因为在我的部署中,primefaces库被引用了2次

终于解决了! 问题在于primefaces.jar文件的部署。 我的web应用程序运行在Glassfish v3上,我在Eclipse中开发它。当我下载primefaces jar文件时,我把它放在glassfish/lib文件夹中。之后,我将这个jar的副本放在WEB-INF中,并像那样部署它。这是个问题。 我不明白为什么,但在内部,脚本从两个JAR收到了2个响应,并且由于解析错误而停止工作

总之,千万不要将primefaces.jar的副本同时放在应用程序的glassfish/lib和WEB-INF/lib中。希望它能帮助有同样问题的人

终于解决了! 问题在于primefaces.jar文件的部署。 我的web应用程序运行在Glassfish v3上,我在Eclipse中开发它。当我下载primefaces jar文件时,我把它放在glassfish/lib文件夹中。之后,我将这个jar的副本放在WEB-INF中,并像那样部署它。这是个问题。 我不明白为什么,但在内部,脚本从两个JAR收到了2个响应,并且由于解析错误而停止工作


总之,千万不要将primefaces.jar的副本同时放在应用程序的glassfish/lib和WEB-INF/lib中。希望它能帮助有同样问题的人

我确认Artem对PrimeFaces相关错误的解决方案:

SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
我正在使用Eclipse和Weblogic 12进行开发,并部署一个巨大的遗留EAR,其中包含6124个类和许多其他东西,包括一个使用PrimeFaces的新web应用程序

症状是,在JSF生命周期阶段过程\验证之后,生命周期似乎会跳过更新\模型\值并调用\应用程序,而不是跳转到呈现\响应。页面将显示FacesMessage错误字符串,但浏览器将卡在忙碌的光标上。只有重新加载页面才能停止它


通过从\WEB-INF\lib中删除重复的PrimeFeces jar,可以解决此问题。

我确认Artem对PrimeFaces相关错误的解决方案:

SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
我正在使用Eclipse和Weblogic 12进行开发,并部署一个巨大的遗留EAR,其中包含6124个类和许多其他东西,包括一个使用PrimeFaces的新web应用程序

症状是,在JSF生命周期阶段过程\验证之后,生命周期似乎会跳过更新\模型\值并调用\应用程序,而不是跳转到呈现\响应。页面将显示FacesMessage错误字符串,但浏览器将卡在忙碌的光标上。只有重新加载页面才能停止它


通过从\WEB-INF\lib中删除重复的PrimeFeces jar,可以解决此问题。

无法单击注册按钮是什么意思?页面是否已提交?你能检查一下是否有Javascript错误吗?我的意思是不再触发processRegistration方法。当我输入正确的数据时,错误消息不会更新。以及应用程序冻结(停止工作)的所有按钮。我没有检查任何javascript错误(稍后我会检查,谢谢你的想法),但是没有服务器端错误,actionListener方法根本不会被触发(或者被触发,但没有任何记录)。如果在处理请求期间发生javascript错误,那么整个javascript上下文完全停止工作。这也会影响ajax提交(因为它们是由JavaScript执行的)。您需要弄清楚为什么会出现JSON解析错误。一旦您解决了这个问题,ajax应该继续正常工作。根据目前提供的信息,不可能指出JSON parsi的原因
SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data