Переменная сессии не загружается для пароля
Вопрос немного длинный, но я чувствую его интересным. Пожалуйста, посмотрите плз. У меня есть jsp с именем "Menubaruser.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>
В действительности, когда пользователь входит в систему, имя пользователя и пароль задаются как переменные сеанса со своими значениями. Теперь пользователь может делать все, что пожелает, например, обновлять профиль, показывать профиль и т. Д. Теперь я хочу, чтобы, когда пользователь нажимал на главную страницу, должна отображаться домашняя страница пользователя, т.е. страница, которая появляется при входе пользователя в систему. Эта страница называется 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 содержит некоторый динамический контент, который поступает через действие истории пользователя. Что я хочу, так это то, что контент также загружается при нажатии на дом. Теперь происходит, когда пользователь щелкает по дому, затем вызывается действие login.action с отправленной мной строкой запроса, соответствующей нажатию, как показано в "menubaruser.jsp", но показанное o / p в том, что оно не загружает поле пароля. Он возвращает "вход", который показывает мне ошибку проверки пароля на стороне сервера как "Пароль требуется".
Нужный jsp для рендеринга называется loginSuccess.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" /> <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" /> <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" /> <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" /> <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, содержимое загружалось. Поэтому, когда я нажимаю Home в menubaruser.jsp, я хочу, чтобы "логин" вызывался со значением имени пользователя и пароля, которые должны быть установлены со значениями, присутствующими в сеансе. Если это происходит успешно, то из-за цепочки действий вызывается действие "userhistory" и отображается loginSuccess.jsp с необходимыми данными.
Проблема заключается в том, что когда я отправляю строку запроса со значением имени пользователя и пароля, он не устанавливает значение пароля и принимает пароль как пустой и, следовательно, возвращает "input", который отображает loginPage.jsp с actionerror "Password empty". Я также попытался отправить постоянное значение вместо значения сеанса в пароле, но проблема все еще сохраняется. Он устанавливает значение имени пользователя, но не может ввести пароль.
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>
Пожалуйста, помогите...
1 ответ
Насколько я понимаю из приведенного выше поста, вы пытаетесь установить значение атрибута для типа пароля.
Это невозможно из-за некоторых проблем безопасности.
Вы можете использовать текстовое поле и использовать некоторый код Java-скрипта, чтобы изменить видимость символов, отображаемых в типе ввода.