<h:button>没有执行简单的bean方法</h:button>

时间:2014-02-09 13:16:14

标签: jsf button

我试图做一个简单的bean方法,但它不起作用,不要在eclispe的控制台中显示syso,当我点击按钮时,它将我的网址更改为http://localhost:8080/Projeto01/index.jsf?jftfdi=&jffi=%2Findex.xhtml

为什么不工作以及为什么要更改这个奇怪网址的网址?

我的msg.java(bean)

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

    @ManagedBean
    @SessionScoped
    public class Msg {

        public void show() {
            System.out.println("Working Bean Method");
        }
    }

我的index.xhtml

<!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:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets">
        <ui:composition>

<h:head></h:head>

    <h:body>
    <h:form>

    <h:button value="Show" action="#{msg.show()}"></h:button>

    </h:form>
    </h:body>
    </ui:composition>
</html>

和我的web.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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <display-name>do0</display-name>
  <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>

1 个答案:

答案 0 :(得分:1)

<h:button>是一个简单的页面到页面导航按钮。正如您在tag documentation中看到的那样,它根本不支持action属性。您很可能会将<h:button><h:commandButton>混淆,后者又会支持该属性。

为了实现按下按钮调用JSF支持bean方法的功能要求,只需将<h:button>替换为<h:commandButton>

<h:commandButton value="Show" action="#{msg.show()}" />

另见:


对于目标URL中的jftfdijffi查询字符串参数,这是Mojarra实现新JSF 2.2流程范围的错误。这在Mojarra 2.2.5中得到修复。请注意,这与您的具体问题无关,因为您不应该首先使用<h:button>

另见: