2017-02-18 77 views
0

我的jsf命令按鈕沒有調用它應該調用的方法。這裏是代碼:JSF命令按鈕不調用bean方法

<h:form> 

      <h:outputText value="Data de nascimento" 
       style="font-size: 15px; float:left;margin-left:20%;" /> 
      <br /> 
      <h:inputText value="#{registroPageMBean.usuario.nascimento}" 
       styleClass="default_input" 
       style="float:left;margin-left:20%;width:60%"></h:inputText> 

      <h:outputText value="Foto de Perfil" 
       style="font-size: 15px; float:left;margin-left:20%;" /> 
      <br /> 
      <p:fileUpload value="#{registroPageMBean.file}" mode="simple" 
       skinSimple="true" label="Enviar arquivo" /> 

      <br /> 
      <br /> 
      <br /> 
      <h:commandButton rendered="true" styleClass="default_button" value="Finalizar" 
       action="#{registroPageMBean.registrar}" /> 
     </h:form> 

我嘗試了一切,但它沒有奏效。誰能幫我這個?

這裏是Bean方法:

@RequestScoped 
@ManagedBean(name = "registroPageMBean") 
public class RegistroPageMBean { 
private Usuario usuario; 
private UploadedFile file; 

public RegistroPageMBean() { 
    usuario = new Usuario(); 
    System.out.println("INICIANDO"); 
} 

public static BufferedImage toBufferedImage(Image img) { 
    if (img instanceof BufferedImage) { 
     return (BufferedImage) img; 
    } 

    // Create a buffered image with transparency 
    BufferedImage bimage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB); 

    // Draw the image on to the buffered image 
    Graphics2D bGr = bimage.createGraphics(); 
    bGr.drawImage(img, 0, 0, null); 
    bGr.dispose(); 

    // Return the buffered image 
    return bimage; 
} 

public static void saveToFile(BufferedImage img) throws FileNotFoundException, IOException { 

    File outputfile = new File("imagem.png"); 
    ImageIO.write(img, "png", outputfile); 
} 

public void registrar() { 
    System.out.println("SALVANDO"); 
    try { 

     Image image = ImageIO.read(file.getInputstream()); 

     saveToFile(toBufferedImage(image)); 

     usuario.setPerfil(image); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

public Usuario getUsuario() { 
    return usuario; 
} 

public void setUsuario(Usuario usuario) { 
    this.usuario = usuario; 
} 

public UploadedFile getFile() { 
    return file; 
} 

public void setFile(UploadedFile file) { 
    this.file = file; 
} 

我做了這樣的代碼在另一個XHTML頁面,它的工作。所以我把那個命令按鈕放在另一個頁面上,它給了我一個NullPointerException,我以前從未見過

謝謝!

回答

0

您確定上傳的文件不爲空?嘗試在註冊器()方法中運行調試。

如果這不是問題,請發佈您的堆棧跟蹤。 「一個堆棧跟蹤勝過千言萬語」。

+0

這一次我tryed使用另一XHTML和它的工作。爲什麼這隻適用於一個xhtml? –

0

這是另一個XHTML它的工作

<h:body 
style="background-color: #2b5dad;width:100%;height:100%;margin:0px;"> 
<div class="lay_page"> 
    <div style="width: 100%; height: 100%; padding-top: 3.5%;"> 
     <h:outputText styleClass="title_font" value="PROTÓTIPO ALPHA" /> 
    </div> 
</div> 
<div class="lay_page_center"> 
    <div class="lay_page_center_center"> 
     <h3 class="default_font">Login</h3> 
     <h:form> 
      <h:outputText value="Email" 
       style="font-size: 15px; float:left;margin-left:20%;" /> 
      <br /> 
      <h:inputText value="#{loginPageMBean.email}" 
       styleClass="default_input" 
       style="float:left;margin-left:20%;width:60%"></h:inputText> 
      <br /> 
      <h:outputText value="Senha" 
       style="font-size: 15px; float:left;margin-left:20%;" /> 
      <br /> 
      <h:inputSecret value="#{loginPageMBean.senha}" 
       styleClass="default_input" 
       style="float:left;margin-left:20%;width:60%" /> 
      <br /> 
      <br /> 
      <br /> 
      <h:commandButton styleClass="default_button" value="Login" 
       action="#{loginPageMBean.login}"></h:commandButton> 
      <h:commandButton styleClass="default_button" value="Registrar" 
       action="register_page.xhtml"></h:commandButton> 
      <h:commandButton styleClass="default_button" value="Próximo passo" 
       action="#{registroPageMBean.registrar}"></h:commandButton> 
     </h:form> 
    </div> 
</div> 
<div class="lay_page"></div> 

+0

這個文件有相同的bean嗎?您在此xhtml中沒有。 – ceklock