2015-12-13 6 views
0

У меня есть кнопка, когда я нажимаю открытую модальную панель - она ​​работает нормально. Теперь я попытался добавить кнопку, чтобы скрыть панель - это тоже работает, но проблема в том, что когда я попытался показать текст, «панель закрыта» после нажатия кнопки, она не работает. Я использую Jsf 1.2 и richfaces 3.3.3.JSF Richfaces modalPanel

У меня есть следующее сообщение об ошибке:

org.apache.jasper.el.JspELException: /index.jsp(35,7) 'JavaScript: Richfaces.hideModalPanel (' myModalPanel '); # { welcomeBeanText (true)} 'Метод не найден: класс com.firstjsf.backingbeans.WelcomeBean.showText (java.lang.Boolean) в org.apache.jasper.el.JspValueExpression.getValue (JspValueExpression.java:123)

над кодом:

я ndex.jsp

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%> 
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%> 
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%> 
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html> 
<f:view> 
    <h:form> 
     <rich:panel> 
      <f:facet name="header"> 
       <h:outputText value="Product"></h:outputText> 
      </f:facet> 

      <h:form> 
       <a4j:commandButton 
        id="newWid" 
        value="New Widget..." 
        immediate="true" ajaxSingle="true" 
        reRender="text" 
        oncomplete="javascript:Richfaces.showModalPanel('myModalPanel');" 
        styleClass="verboseButton noprint" /> 
      </h:form> 

      <rich:modalPanel id="myModalPanel"> 
       <f:facet name="header"> 
        <h:outputLabel value="123" /> 
       </f:facet> 

       From Modal Panel 

       <a4j:commandButton value="Hide" id="btn_hide" 
       oncomplete="javascript:Richfaces.hideModalPanel('myModalPanel');#{welcomeBean.setShowText(true)}" /> 
      </rich:modalPanel> 

      <h:outputText id="text" 
      value="Panel closed" 
      rendered="#{helloMessage.showText eq true}"> 
      </h:outputText> 
     </rich:panel> 
    </h:form> 
</f:view> 
</html> 

лица-config.xml

<?xml version="1.0" encoding="UTF-8"?> 

<faces-config 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" 
    version="1.2"> 
    <managed-bean> 
     <managed-bean-name>welcomeBean</managed-bean-name> 
     <managed-bean-class>com.firstjsf.backingbeans.WelcomeBean</managed-bean-class> 
     <managed-bean-scope>request</managed-bean-scope> 
    </managed-bean> 
    <managed-bean> 
     <managed-bean-name>helloMessageBean</managed-bean-name> 
     <managed-bean-class>com.firstjsf.backingbeans.HelloMessageBean</managed-bean-class> 
     <managed-bean-scope>request</managed-bean-scope> 
    </managed-bean> 

    <navigation-rule> 
     <description>Welcome page to message page</description> 
     <from-view-id>/index.jsp</from-view-id> 
     <navigation-case> 
      <from-outcome>helloMessage</from-outcome> 
      <to-view-id>/message.jsp</to-view-id> 
     </navigation-case> 
    </navigation-rule> 

    <navigation-rule> 
     <description>Welcome page to message page</description> 
     <from-view-id>/message.jsp</from-view-id> 
     <navigation-case> 
      <from-outcome>back</from-outcome> 
      <to-view-id>/index.jsp</to-view-id> 
     </navigation-case> 
    </navigation-rule> 

</faces-config> 

BeanAction

public class WelcomeBean { 

    private boolean showText =false; 

    public String sayHello(){ 
     return "helloMessage"; 
    } 
    public boolean isShowText() { 
     return showText; 
    } 

    public void setShowText(boolean showText) { 
     this.showText = showText; 
    } 
} 

ответ

0

Вы смешивание JavaScript и EL выражения, @oncomplete для выполнения JavaScript , если вы хотите что-то сделать на сервере, используйте @action или @actionListener. В противном случае выражение будет оценено, и браузер попытается выполнить возвращаемое значение, как если бы это был JavaScript.

Кстати, ваш код показывает, что вы используете setShowText(true) (это правильно), но исключение говорит, что вы используете только showText(true), и что же тогда?

Смежные вопросы