2017-02-18 3 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

Вы уверены, что загруженный файл не является нулевым? Попробуйте запустить отладку в вашем методе registrar().

Если это не проблема, отправьте трассировку стека. «Одна трассировка стека стоит тысячи слов».

+0

На этот раз я судимый с помощью другого 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

Тот же компонент для этого файла? У вас нет файла в этом xhtml. – ceklock

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