2013-10-14 44 views
2

这个问题有点长,但我觉得它很有趣。请看看plz。 我有一个名为“Menubaruser.jsp” JSP如下:会话变量不能加载密码

<%@ taglib prefix="sj" uri="/struts-jquery-tags"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
    <div id='cssmenu'> 
      <ul> 
       <s:url id="userhome" value="/login.action?login.username=%{#session.username}&login.password=%{#session.password}"></s:url> 
       <li><sj:a id="user_home" href="%{userhome}" targets="mainContent"><span>Home</span></sj:a></li> 
       <%-- <li><s:a action="#"><span>Home</span></s:a></li> --%> 

       <s:url id="showProfile" value="/profile.action"></s:url> 
       <li><sj:a id="profile_show" href="%{showProfile}" targets="mainContent"><span>Show Profile</span></sj:a></li> 

       <s:url id="editProfile" value="/editProfileLink.action"></s:url> 
       <li><sj:a id="profile_edit" href="%{editProfile}" targets="mainContent"><span>Update Profile</span></sj:a></li> 

       <s:url id="signout" value="/logout.action"></s:url> 
       <li><sj:a id="signout" href="%{signout}" targets="mainContent"><span>Sign Out</span></sj:a></li> 
       <%-- <li class='last'><s:a action="#"><span>Contact Us</span></s:a></li> --%> 
      </ul> 
    </div> 

什么实际发生的是,当用户登录,用户名和密码设置为与他们的价值观会话变量。现在用户可以做任何他想要更新配置文件,显示配置文件等。现在我想要的是当用户点击home时,用户的主页必须出现,即用户登录时出现的页面。该页面被命名为loginSuccess。 jsp和它被打开对应于login.action如图以下struts.xml中:

<action name="login" class="com.view.LoginAction" method="checkLogin"> 
     <result name="input">/loginPage.jsp</result> 
     <result name="loginSuccessUser" type="chain">userHistory</result> 
     <result name="loginSuccessAdmin">/loginSuccessAdmin.jsp</result> 
     <result name="loginClicked">/loginPage.jsp</result> 
    </action> 
    <action name="userHistory" class="com.view.HistoryAction" method="UserHistory"> 
      <result name="showHistory">/loginSuccess.jsp</result> 
    </action> 

loginSuccess.jsp含有自带通userhistory动作一些动态内容。我希望的是当点击home时,内容也会被加载。 现在发生的事情是当用户点击home时,然后调用login.action与我发送的查询字符串相对应的点击,如“menubaruser.jsp”所示,但显示的o/p是它没有加载密码字段。它返回“输入”,显示密码的服务器端验证错误为“需要密码”。

被渲染名为loginSuccess.jsp和编码为所需的JSP如下:

<%@ taglib prefix="s" uri="/struts-tags"%> 
     <jsp:include page="menubaruser.jsp"></jsp:include> 
     <div style="width:898px"><br><center>Welcome Mr. <b><s:property value="#session.name"/> </b></center> </div> 
     <div id="ajaxdiv"> 
     <div id="ContentLeft"> 
      <jsp:include page="search.jsp"></jsp:include> 
     </div> 
     <div id="contentRight"> 
      <jsp:include page="topdeals.jsp"></jsp:include> 
     </div> 
     </div> 
     <br> 
     <div> 
      <jsp:include page="userHistoryWidget.jsp"></jsp:include> 
     </div>  

UserHistoryWidget.jsp如下:

<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%> 

    <div id="searchHeaderHistory">Booking History</div> 
    <div class="CSSTableGenerator"> 
     <table> 
      <colgroup> 
       <col span="1" style="width: 5%;"> 
       <col span="1" style="width: 10%;"> 
       <col span="1" style="width: 8%;"> 
       <col span="1" style="width: 15%;"> 
       <col span="1" style="width: 15%;"> 
       <col span="1" style="width: 6%;"> 
       <col span="1" style="width: 6%;"> 
       <col span="1" style="width: 17%;"> 
       <col span="1" style="width: 18%;"> 
      </colgroup> 

      <tr> 
       <td>Ticket ID</td> 
       <td>Booking Date</td> 
       <td>Flight ID</td> 
       <td>From</td> 
       <td>To</td> 
       <td>Total Fare</td> 
       <td>Net Fare</td> 
       <td></td> 
       <td></td> 
      </tr> 

      <s:iterator value="ticketsList" var="ticket" status="stat"> 

       <tr> 
        <td align="center"><s:property value="#ticket.tid" /></td> 
        <td align="center"><s:property value="#ticket.bookingdate" /></td> 
        <td align="center"><s:property 
          value="#ticket.scheduleDetails.flightDetails.fid" /></td> 

        <s:if test="#ticket.flag==3"> 
         <td><s:property 
           value="#ticket.scheduleDetails.flightDetails.routeDetails.via" /><br> 
          <s:property value="#ticket.scheduleDetails.via_dep_date" />&nbsp;<s:property 
           value="#ticket.scheduleDetails.via_dep_time" />hrs</td> 
        </s:if> 
        <s:if test="#ticket.flag==1 ||#ticket.flag==2||#ticket.flag==4"> 
         <td><s:property 
           value="#ticket.scheduleDetails.flightDetails.routeDetails.source" /><br> 
          <s:property value="#ticket.scheduleDetails.source_dep_date" />&nbsp;<s:property 
           value="#ticket.scheduleDetails.source_dep_time" />hrs</td> 
        </s:if> 
        <s:if test="#ticket.flag==1 ||#ticket.flag==2||#ticket.flag==3"> 
         <td><s:property 
           value="#ticket.scheduleDetails.flightDetails.routeDetails.destination" /><br> 
          <s:property value="#ticket.scheduleDetails.dest_arr_date" />&nbsp;<s:property 
           value="#ticket.scheduleDetails.dest_arr_time" />hrs</td> 
        </s:if> 
        <s:if test="#ticket.flag==4"> 
         <td><s:property 
           value="#ticket.scheduleDetails.flightDetails.routeDetails.via" /><br> 
          <s:property value="#ticket.scheduleDetails.via_arr_date" />&nbsp;<s:property 
           value="#ticket.scheduleDetails.via_arr_time" />hrs</td> 
        </s:if> 
        <td align="center"><s:property value="#ticket.fare" /></td> 
        <td align="center"><s:property value="#ticket.dealFare" /></td> 
        <td style="width: 150px" align="center"> 
         <s:url id="getPassengers" value="/getPassengers.action"> 
          <s:param name="Tid" value="#ticket.tid" /> 
         </s:url> 
         <sj:a id="link_%{#stat.index}" href="%{getPassengers}" targets="ajaxdiv" cssClass="orangebuttonsmall"> 
           View Details  
         </sj:a> 
        </td> 
        <td style="width: 150px" align="center"> 
         <s:a action="cancel" id="button1" style="float:left" cssClass="orangebuttonsmall">Cancel Ticket 
          <s:param name="Tid" value="#ticket.tid"></s:param> 
         </s:a> 
        </td> 
       </tr> 
      </s:iterator> 

     </table> 
    </div> 

现在我想是每当这个loginSuccess .jsp打开userHIstoryWidget.jsp内容被加载。因此,当我在menubaruser.jsp中单击主页时,我想要使用用户名和密码的值调用“登录”以使用会话中存在的值进行设置。如果这种情况成功发生,那么由于操作链接,“userhistory”操作被调用并显示loginSuccess.jsp所需的数据。

问题是,当我发送带有用户名和密码值的查询字符串时,它没有设置密码的值,并且它将密码设置为空,因此返回“输入”,它使用actionerror呈现loginPage.jsp“密码空”。 我也尝试发送一个常量值而不是密码中的会话值,但问题仍然存在。它设置用户名的值,但输入密码失败。

LoginPage.jsp如下:

<%@ taglib prefix="s" uri="/struts-tags"%> 
      <%@ taglib prefix="sj" uri="/struts-jquery-tags"%> 
      <jsp:include page="menubar.jsp"></jsp:include> 
      <br><br><br><br><br><br>    
      <s:form action="login" method="post" theme="css_xhtml" cssClass="form1" style="margin:0 211px"> 
       <div class="searchHeader">LOGIN</div> 
       <div id="error"> 
        <s:property value="errormsg"/> 
       </div> 
       <s:textfield label="Username" name="login.username" /> 
       <s:textfield label="Password" name="login.password" /> 
       <div class="submitButton"> 
        <sj:submit value="SUBMIT" targets="mainContent"/> 
       </div> 
      </s:form> 

请帮助...

+0

将'escapeAmp =“false”'添加到''。 –

+0

@AleksandrM什么都没有发生先生..发生同样的错误。它不会通过我在查询字符串中传递的内容替换密码字段的值。即使我传递一个恒定的值,它也不会接受它。无论什么,密码属性都保留为空,因此返回输入。 –

+0

显示呈现的HTML。 –

回答

0

按照从上面的帖子我的理解你正在尝试设置值属性的密码类型。

由于某些安全问题,这是不可能的。

您可以使用文本框并使用一些java脚本代码来更改输入类型中显示的字符的可见性。