Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller getParameter()返回null_Model View Controller_Jsf - Fatal编程技术网

Model view controller getParameter()返回null

Model view controller getParameter()返回null,model-view-controller,jsf,Model View Controller,Jsf,我的家庭作业给我带来了很多问题。。。。它修改了一个JSF项目,其中包含两个页面和一个bean,通过为另外两个页面添加两个页面、一个控制器servlet和另一个bean来适应MVC2。新主页将转发到新的第二页或旧的第一页。我的问题是response.getParameter()总是导致null <%@page session="false" import="java.util.Iterator"%> <%@taglib prefix="f" uri="http://java.su

我的家庭作业给我带来了很多问题。。。。它修改了一个JSF项目,其中包含两个页面和一个bean,通过为另外两个页面添加两个页面、一个控制器servlet和另一个bean来适应MVC2。新主页将转发到新的第二页或旧的第一页。我的问题是response.getParameter()总是导致null

<%@page session="false" import="java.util.Iterator"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<jsp:useBean id="status" scope="request" class="JSFRegistration.Status" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>JSP Page</title>
    </head>
    <body>
        <% if (status!=null && !status.isSuccessful()){%>
            <font color="red">Processing errors:
                <ul><%Iterator errors=status.getExceptions();
            while (errors.hasNext()){
                Exception e = (Exception) errors.next();%>
                <li><%= e.getMessage()%><%}%></ul></font><%}%>
        <form action="LoginServlet" method="POST">
            <% String username = request.getParameter("username");
            if (username==null) username="";%>
            <input type="text" name="usernameTF" value="<%=username%>" />
            <% String password = request.getParameter("password");
            if (password==null) password="";%>
            <input type="password" name="passwordTF" value="<%=password%>" />
            <input type="submit" value="Login" />
        </form>

    </body>
</html>
和Status类,再次直接从书中复制

public class Status {
private ArrayList exceptions;

public Status(){
    exceptions = new ArrayList();
}
public void addException(Exception exception) {
    exceptions.add(exception);
}
public boolean isSuccessful(){
    return (exceptions.isEmpty());
}
public Iterator getExceptions(){
    return exceptions.iterator();
}

无论在这两个框中键入什么,单步调试都会显示未传递到参数的值。如果两个字段都有文本,如果只有一个字段有文本,并且两个字段都为空,我会在屏幕上方打印创建的异常

您的请求参数名称与输入字段名称不匹配。您已经为输入字段分配了一个名称
usernameTF
passwordTF
。然后,它们完全可以通过这些名称作为请求参数使用,但您正试图使用名称
用户名
密码
来获取它们。因此,您需要修复输入字段名称或请求参数名称,以便它们相互匹配


顺便问一下,为什么要从JSF这样的现代MVC框架倒退到90年代风格的笨拙JSP,其中包含混杂的业务代码?这真的是家庭作业要问你的吗?自1998年以来,HTML
元素也被弃用。你从哪里知道的?课程的质量真的好吗?

啊,完全忽略了这一点。老实说,我有点落后了,这本书和额外的内容都过时了。这本书对JSF没有任何帮助,因为它展示了NetBeans中支持Visual JSF而NetBeans 7中不支持Visual JSF时的一切。它没有给出任何代码,我在这里发布的是额外内容的一个副本,因为这是我们没有投入额外工作来自学的最接近的例子。这个类不是必需的,我只是选择它,因为它是一些证书选修课中更有趣的一个。你可以在我们的JSF标签wiki页面上找到JSF教程。我还想和你的导师讨论一下课程材料的质量。如果这是作业所期望的,我会非常惊讶。而且它有一个很大的学习曲线,pre-req没有涵盖这门课期望我们已经知道的很多东西,都使用同一本书。没有导师,大学课程。我想作为一个400级的学生,当这本书没有帮助的时候,我们需要更多的人自己去学习。我们有很多人抱怨这本书和课堂上的额外内容,以及老师如何布置我们的作业它在5年前就消失了:课程材料显然已经过时,当你试图在谷歌上搜索解决方案/答案时,这只会让你更加困惑,因为这通常只会返回最新的结果。而且,JSF2.x相关的结果可能会让您更加困惑,因为编程方法自JSF2.0以来已经完全改变了。如上所述,检查JSF标记wiki页面。在底部你可以找到合适的教程链接,例如coreservlets.com。
public class Status {
private ArrayList exceptions;

public Status(){
    exceptions = new ArrayList();
}
public void addException(Exception exception) {
    exceptions.add(exception);
}
public boolean isSuccessful(){
    return (exceptions.isEmpty());
}
public Iterator getExceptions(){
    return exceptions.iterator();
}