Проблема смешивания JSF / JSP - PullRequest
       6

Проблема смешивания JSF / JSP

0 голосов
/ 12 октября 2009

В простом веб-приложении мне нужно объединить jsp с jsf (для школьного задания). Я использую NetBeans 6.7.1. На моей странице входа у меня есть следующий код:

<html>
<body>
    <form name="form" method="post" action="processuserinfo.jsp" >
        UserName: <input type="text" name = "username" value=""><br>
        Password: <input type="password" name="userpassword" value=""><br>
        <input type="submit" name="submit" value="Login">
    </form>
</body>
</html>
</body>

processuserinfo.jsp:

<%@page import="java.util.*" %>
<jsp:useBean id="idhandler" class="dsassignment1java.LoginManager" scope="session">
<jsp:setProperty name="idhandler" property="*"/>
</jsp:useBean>
<% idhandler.validateUser(session, pageContext); %>

Однако метод validateUser никогда не вызывается. Я предполагаю, что это как-то связано с правилами навигации, определенными вface-config.xml, но я не знаю, как правильно установить правило. Я пытался определить правило так:

<navigation-case>
        <from-outcome>goProcessUserInfo</from-outcome>
        <to-view-id>/processuserinfo.jsp</to-view-id>
    </navigation-case>

и укажите goProcessUserInfo как действие для моей формы, но оно не работает.

1 Ответ

4 голосов
/ 12 октября 2009

Вы никоим образом не используете JSF - это обычная HTML-страница, которая вызывает JSP (которая не содержит тегов JSF).

Чтобы переформулировать страницу входа в систему как JSF JSP, вы можете написать что-то вроде этого:

<?xml version="1.0" encoding="UTF-8" ?><jsp:root
  xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"><jsp:directive.page
    language="java"
    contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" /><jsp:text><![CDATA[<?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"> ]]>
    </jsp:text>
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  </head>
  <body>
  <f:view>
    <h:form>
      user: <h:inputText value="#{idhandler.username}" /><br />
      pw: <h:inputText value="#{idhandler.password}" /><br />
      <h:commandButton value="login" action="#{idhandler.validateUser}" />
    </h:form>
  </f:view>
  </body>
  </html>
</jsp:root>

Это определяет представление JSF с элементом управления формы, который содержит два элемента управления вводом текста и кнопку. Входы и кнопка привязаны к управляемому бину. Управляемый компонент может выглядеть так:

public class LoginManager {
  private String username;
  private String password;

  public String getUsername() { return username; }
  public void setUsername(String username) { this.username = username; }

  public String getPassword() { return password; }
  public void setPassword(String password) { this.password = password; }

  public String validateUser() {
    // TODO: check login details
    boolean authenticated = true;
    return authenticated ? "goProcessUserInfo" : "errorPage";
  }
}

Возвращаемое значение метода validateUser используется для сопоставления <from-outcome> случая навигации. Управляемый компонент будет определен в вашем faces-config.xml:

  <managed-bean>
    <managed-bean-name>idhandler</managed-bean-name>
    <managed-bean-class>dsassignment1java.LoginManager</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>

К сведению: при написании приложений JSF вы сводите к минимуму использование любых стандартных действий (теги jsp:... в пространстве имен http://java.sun.com/JSP/Page), обычно избегаете тегов JSTL (теги <c:... в пространствах имен http://java.sun.com/jsp/jstl/...) и никогда не используйте скриптлеты (<% ... %> код, встроенный в представление).

Подробнее см. JavaServer Faces учебника JEE5 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...