我可以再次设置现有请求属性的值吗?

时间:2013-03-31 16:43:25

标签: jquery html jsp request

我有一个主页,其中有标题,侧边栏和div标签。 当用户点击"注册"时,Registration.jsp被加载到div标签中。

成功提交注册表后,我想将其转发到我要显示html" bookimages.html"的同一页面。在div标签中。

我尝试设置属性值来执行此操作。

这是我的mainpage.css:

<body id="userprofilepage">
<% request.setAttribute("regisstatus",null); %>
<div>
<%@ include file="header.jsp" %><br>
</div>

<div id="mainsidebar">
<%@ include file="sidebar.html" %>
</div>

<div>
<%@ include file="priviledges.html" %>
</div>

<div id="contentarea">
<% if(request.getAttribute("regisstatus")==null)
{ %>

<%@ include file="bookimages.html" %>
<% } else if((request.getAttribute("regisstatus").toString()).equals("success")) { %>
            <%@ include file="Register.jsp" %>
    <% } else { %>

<h3>Sorry could not register.. Try again</h3>
<% }  %>
</div>

</body>

jquery的

在我的标题中,我有一个注册按钮:

    $(function(){
    $("#register").click(function(){
        $("#contentarea").load("RegistrationServlet.jsp");
    });
});

......工作正常。并调用RegistrationServlet.java:

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub

        //Takin all parameters

          String fname = request.getParameter("fname");
          //System.out.println(fname);
          String lname = request.getParameter("lname");
          //System.out.println(lname);
          String mobileno = request.getParameter("mobno");
          //System.out.println(mobileno);
          String pwd = request.getParameter("password");
          //System.out.println(uid);
         // String cpwd = request.getParameter("password");
          //System.out.println(pwd);
          String email = request.getParameter("email");
          String off_add= request.getParameter("off_add");
          String perm_add = request.getParameter("perm_add");

          String[] r = request.getParameterValues("role");

          for(int i=0;i<r.length;i++)
          {
              System.out.println(r[i]);
          }
          ArrayList<Integer> role=new ArrayList<Integer>();

          for(int i=0;i<r.length;i++)
          {
              Integer r1=new Integer(RoleManager.getRoleid(r[i]));
            role.add(r1);
          } 
          /*for(int i=0;i<r.length;i++)
          {
              Integer r1=new Integer(RoleManager.getRoleid(r[i]));
              role.add(r1);
          }*/



         String g[]=request.getParameterValues("genre");
          ArrayList<Integer> genre=new ArrayList<Integer>();
          for(String i : g)
          {
              Integer g1=new Integer(GenreManager.getGenreid(i));
              genre.add(g1);
          }

        // creating user object 
          RegisteredUser uobj = new RegisteredUser();

        //setting values in RegisteredUser obect

          uobj.setFname(fname);
          uobj.setLname(lname);
          uobj.setPassword(pwd);
          uobj.setMobileno(mobileno);
          uobj.setPassword(pwd);
          uobj.setEmail(email);
          uobj.setOffadd(off_add);
          uobj.setPermadd(perm_add);
          uobj.setRole(role);
          uobj.setGenre(genre);
          uobj.setUid("abc2");

          //send user object to manger

          boolean suc=UserManager.createUser(uobj);
          System.out.println("user object created");
          if(suc) 
             request.setAttribute("regisstatus", "success");
          else
              request.setAttribute("regisstatus", "fail");
          RequestDispatcher rd=request.getRequestDispatcher("/userprofilepage.jsp");
          rd.forward(request, response);


    }

}

但在我的主页中,未设置request属性。你能帮我找出问题吗?

1 个答案:

答案 0 :(得分:0)

首先,使用.load()函数的方式不正确。

在您的代码中,$("#contentarea") div在服务器端计入第一个请求,然后不再计算。您的.load()函数会将 RegistrationServlet.jsp 的结果加载到您的div中,但不会根据它刷新div。

我认为你sholud在“RegistrationServlet.jsp”上做了一个ajax请求,并且成功刷新了你的页面,或者在 RegistrationServlet.jsp 中建立了逻辑所以.load()函数调用可以保持不变。