2015-01-27 2 views
0

Я работаю над проектом jsf, где мне нужно интегрировать апплет для проверки печати фигур для пользователя. Мой апплет работает нормально, и я получаю логическое значение с моего аплета на страницу jsf. Сначала моя командная кнопка в форме jsf будет отключена. Я просто хочу включить мою кнопку jsf, когда мой апплет вернет истинное значение. Я вставляю свой код здесь.Включить/отключить кнопку через java-скрипт в JSF

Мой JSF код:

<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- <ui:composition xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:c="http://java.sun.com/jsp/jstl/core" 
    template="/layouts/BasicTemplate.xhtml" 
    xmlns:h="http://java.sun.com/jsf/html"> 
    <ui:define name="content"> 
     <div> --> 

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

<ui:composition template="/layouts/BasicTemplate.xhtml"> 
    <ui:define name="content"> 
     <div class="container"> 

     <script> 

     function doAlert(s) 
     { 
      if(s=="true") 
       { 
       alert(s); 
       rc(); 
       alert('hi i am'); 
       } 
      else 
       { 
       alert("Wrong Finger Print"); 
       } 
     } 

     </script> 


      <h:form class="form-horizontal" id="myform" > 
       <div class="row"> 
        <!-- <p:growl id="msgs" sticky="true" showDetail="true" /> --> 
      <!-- <div> 
       <div>&nbsp;</div> 
       <div> 
        <c:if test="${not empty param.login_error}"> 
         <div> 
          Your login attempt was not successful, try again. 
          <br/> 
          Reason: #{sessionScope.SPRING_SECURITY_LAST_EXCEPTION.message} 
          <br/> 
         </div> 
        </c:if> 
        <form name="f" action="${request.contextPath}/j_spring_security_check" method="post"> 
         <fieldset> 
          <h4>User Login</h4> 
          <div> 
           <div> 
            <span>Username:</span> 
            <c:if test="${not empty param.login_error}"> 
             <c:set var="username" value="${sessionScope.SPRING_SECURITY_LAST_USERNAME}" /> 
            </c:if> 
            <input type="text" name="j_username" value="#{username}" /> 
            <br/> 
            <span class="password">Password:</span> 

            <input type="password" name="j_password" /> 

           </div> 
           <div> 
            <div> 
             <input name="submit" type="submit" value="Login" /> 
            </div> 
           </div> 
          </div> 
         </fieldset> 
        </form> 
       </div> 
      </div> --> 


     <h:messages /> 
     <h:panelGrid columns="3" cellpadding="4" border="0" columnClasses="control-label"> 

      <h:outputText value="Username :" /> 
      <h:inputText id="username" value="#{loginBean.login}" label="username" style="width: 200;" /> 
      <p:watermark for="username" value="Username" ></p:watermark> 

      <h:outputLabel for="password" value="Password :" /> 
      <h:inputSecret id="password" value="#{loginBean.password}" label="password" style="width: 200;"/> 
      <p:watermark for="password" value="Password"></p:watermark> 

      <p:spacer></p:spacer> 
      <!-- <p:commandButton value="Login" action="#{loginBean.logMeIn}" widgetVar="mybutton" /> --> 

      <p:commandButton id="loginButton" value="Login" action="#{loginBean.logMeIn}" widgetVar="mybutton" disabled="#{!loginBean.enabled}"/> 
      <p:remoteCommand name="rc" update="loginButton" actionListener="#{loginBean.enableButton}" /> 
      <p:spacer></p:spacer> 
      <h:outputText value="#{loginBean.enabled}"></h:outputText> 
      <applet id="fingureprintapplet" name="fingureprint" codebase="classes" code="fingerprintntscanner.MyClassApplet.class" archive="#{facesContext.externalContext.requestContextPath}/FIngerprintntScanner.jar,#{facesContext.externalContext.requestContextPath}/lib/NBioBSPJNI.jar" width="300" height="400"> 

      </applet> 
     </h:panelGrid> 

     </div> 
     </h:form> 

     </div> 
    </ui:define> 
</ui:composition> 



</html> 

и сценарий для того, чтобы кнопка

JS Является

function doAlert(s) 
    { 
     if(s) 
      { 
      alert(s); 
      rc(); 
      } 
    } 

    </script> 

Бин:

import java.io.Serializable; 
import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ManagedProperty; 
import javax.faces.bean.SessionScoped; 
import javax.faces.context.FacesContext; 


@ManagedBean(name = "loginBean") 
@SessionScoped 
public class LoginBean implements Serializable { 
    private static final long serialVersionUID = 1L; 

    private String login; 
    private String password; 
    private boolean enabled; 


    public String getLogin() { 
     return login; 
    } 

    public void setLogin(String login) { 
     this.login = login; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 




    public void enableButton() { 
     System.out.println("chandan"); 
     enabled = true; 
    } 

    public boolean isEnabled() { 
     System.out.println("hi"); 
     return enabled; 
    } 

    public void setEnabled(boolean enabled) { 
     this.enabled = enabled; 
    } 


} 

Но п все работает. чтобы дать мне истинное и ложное значение. Пожалуйста, помогите

+0

где вы его отключите? – ozil

+0

Я написал в самом первом слове disble = true – ASADUL

ответ

0

Вам нужно включить кнопку JSF, а не JavaScript/HTML DOM. Если вам нужно сделать это через JS, вы можете использовать remoteCommand. Нечто подобное должно работать:

XHTML:

<p:commandButton id="loginButton" value="Login" action="#{loginBean.logMeIn}" widgetVar="mybutton" disabled="#{!bean.enabled}"/> 

<p:remoteCommand name="rc" update="loginButton" actionListener="#{bean.enableButton}" /> 

JS:

function doAlert(s) 
     { 
      if(s) 
       { 
       alert(s); 
       rc(); 
       } 
     } 

Бобовые:

private boolean enabled; 

public void enableButton() { 
    enabled = true; 
} 

public boolean isEnabled() { 
    return enabled; 
} 
+0

Я сделал то, что вы сказали, но ничего не работает. кнопка еще не включена. – ASADUL

+0

Используется ли метод enableButton()? Есть ли в браузере какие-либо ошибки JS? –

+0

Нет способа не вызывать. Я думаю, rc(); не работает – ASADUL

2

взглянуть на документацию здесь: http://www.primefaces.org/docs/guide/primefaces_user_guide_5_0.pdf

Кнопка «Основные символы» поддерживает включение/выключение с помощью widgetVar.

так, с кнопкой

<p:commandButton id="loginButton" value="Login" 
action="#{loginBean.logMeIn}" widgetVar="mybutton" 
disabled="#{!loginBean.enabled}"/> 

вы могли бы использовать

function doAlert(s) 
{ 
    if(s) 
     { 
     alert(s); 
     myButton.disable(); // or enable() 
     } 
} 

и он должен работать, как ожидалось. В принципе нет необходимости в remote command здесь, но он также должен работать.

+0

Хотя это может и не быть актуальным, как PF 5.0, вам следует рассмотреть возможность использования widgetVar с пространством имен PF: поэтому «mybutton.enable()» становится «PF (« mybutton »). Enable()».Также отключить кнопки только на стороне клиента могут вызвать проблемы с безопасностью. Но все же хороший ответ –

+0

@ EmilKaminski Хорошая точка в пространстве имен PF и проблемах безопасности. – dognose

+0

@dognose я пробовал ваш код, но все же ошибка есть – ASADUL

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