【问题标题】:JSF command button not calling bean method [duplicate]JSF命令按钮不调用bean方法[重复]
【发布时间】:2017-02-18 23:06:20
【问题描述】:

我的 jsf 命令按钮没有调用它应该调用的方法。代码如下:

    <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

谢谢!

【问题讨论】:

    标签: jsf file-upload primefaces


    【解决方案1】:

    您确定上传的文件不为空吗?尝试在 registrar() 方法中运行调试。

    如果这不是问题,请发布您的堆栈跟踪。 “一个堆栈跟踪值一千个单词”。

    【讨论】:

    • 这次我尝试使用另一个 XHTML 并且成功了。为什么这只适用于一个 xhtml?
    【解决方案2】:

    这是它工作的另一个 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>
    

    【讨论】:

    • 这个文件是同一个bean吗?您在此 xhtml 中没有
    猜你喜欢
    • 2012-08-17
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 2016-09-19
    • 2017-03-27
    • 1970-01-01
    • 2011-04-04
    • 2023-03-27
    相关资源
    最近更新 更多