未设置属性



我一直在寻找解决问题的方法,但直到现在什么也没得到。我在Eclipse JEE上创建了一个新的动态项目。我正在尝试创建一个简单的项目:我有 3 个 inputText,其中 2 个用于我想要求和的数字,第三个用于结果。

在我的控制器中,我有 sum 操作,可以访问用户输入的 2 个值或属性numAnumB

但我的问题是控制器上的值始终为空。我把二传手和二传手放进去,但二传手没有被召唤,只是被叫了。

这是我的代码:

索引.xhtml:

 <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" 
        xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html"> 
    <h:form enctype="multipart/form-data" id="calc">
        <h:inputText id="somaNumA" value="#{calcController.numA}" />
        <h:inputText id="somaNumB" value="#{calcController.numB}"  />
        <h:inputText id="resultadoSoma" value="#{calcController.result}" />
        <h:commandButton value="Somar" id="botaoSoma" type="button"  onclick="#{calcController.soma()}" ajax="true">            
            <f:ajax execute="calc" render=":calc:resultadoSoma"  /> 
        </h:commandButton>
    </h:form>
</html>

这是控制器:

import java.io.Serializable;
import javax.faces.bean.SessionScoped;
@SessionScoped
public class CalcController implements Serializable {
    private static final long serialVersionUID = -1609040715417969082L;
    private String numA, numB, result;
    public CalcController() {}
    public String soma() {
        Integer resultInt = 0;
        if (numA != null && numB != null) {
            resultInt = Integer.parseInt(numA) + Integer.parseInt(numB);
        }
        this.result = resultInt.toString();
        //setResult("teste");
        return this.result;
    }
    public String getNumA() {
        System.out.println("get");
        return numA;
    }
    public void setNumA(String numA) {
        System.out.println("set");
        this.numA = numA;
    }
    public String getNumB() {
        return numB;
    }
    public void setNumB(String numB) {
        this.numB = numB;
    }
    public String getResult() {
        return result;
    }
    public void setResult(String result) {
        this.result = result;
    }
}

人脸配置.xml:

<?xml version="1.0" encoding="UTF-8"?>
    <faces-config
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee           
        http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
        version="2.0">

    <managed-bean>
        <managed-bean-name>calcController</managed-bean-name>
        <managed-bean-class>com.controller.CalcController</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope> 
    </managed-bean>

网站.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://java.sun.com/xml/ns/javaee" 
            xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
            xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
            id="WebApp_ID" version="3.0"> 
        <welcome-file-list> 
            <welcome-file>index.xhtml</welcome-file> 
        </welcome-file-list> 
        <!-- JSF --> 
        <servlet> 
            <servlet-name>Faces Servlet</servlet-name> 
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
            <load-on-startup>1</load-on-startup> 
        </servlet> 
        <servlet-mapping> 
            <servlet-name>Faces Servlet</servlet-name> 
            <url-pattern>*.jsf</url-pattern> 
        </servlet-mapping> 
</web-app>

有人知道我在哪里失败吗?

组件h:commandButtononclick 属性设置要调用的 Javascript 代码。您想要调用服务器操作,因此必须改用action。而且,ajax 不是 h:commandButton 的属性,你可能会与p:commandButton混淆(注意属性ajax的默认值确实是 true ,所以无论如何你都可以避免它)。f:ajax中也是如此:您必须在那里传递服务器操作。

<h:commandButton value="Somar" id="botaoSoma" action="#{calcController.soma()}" >

相关内容

  • 没有找到相关文章