0

My jsf command button is not calling the method it was supposed to call. Here is the code:

    <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>

I tryied everything but it did not worked. Can anyone help me with this?

Here is the Bean method:

@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;
}

I did something like this code in another XHTML page and it worked. So I put that command button in the other page and it gave me a NullPointerException that I have never seen before

Thank you!

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555

2 Answers2

0

Are you sure the uploaded file is not null? Try running a debug in your registrar() method.

If that is not the problem, please post your stack trace. "One stack trace is worth a thousand words".

ceklock
  • 6,143
  • 10
  • 56
  • 78
0

This is the another XHTML it worked

<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>