Невозможно просмотреть ActionMessages в моем JSP и проблемы с проверкой в ​​Struts 2.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно просмотреть ActionMessages в моем JSP и проблемы с проверкой в ​​Struts 2.

Сообщение Anonymous »

У меня возникли различные проблемы с моим кодом:
  • Я не могу просмотреть сообщения ActionMessages и ActionErrors, установленные пользователем LoginAction
  • Если я войду в систему и снова перейду по URL-адресу: /login, меня не перенаправит на страницу успеха.
РЕДАКТИРОВАТЬ:
  • Теперь я могу успешно перенаправить, если сеанс уже существует. Мне пришлось внести 2 изменения, которые я понял:
  • Во-первых, в моем классе действий я устанавливал переменные сеанса в void setSession(Карта карты), что было неправильно (это должна быть только функция установки).
  • Во-вторых, я проверил, существует ли переменная сеанса в моем validate() метод, который решил проблему.
  • Но я по-прежнему не могу просмотреть свои ActonErrors и ActionMessages.
  • Нужно ли использовать . Потому что это мешает моему CSS, и я не могу найти решения, чтобы это исправить. Могу ли я назначить атрибут ID в ?
Ниже приведен мой код JSP:< /p>
...









username


password


I've forgotten my password.






...

Вот мой struts.xml:



















/login



/JSP/sreebhog_login.jsp
/JSP/index.jsp


/JSP/sreebhog_login.jsp





Вот мое действие при входе:
package com.sreebhog.actions;

import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import java.util.Map;

import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;
import com.sreebhog.dao.EmployeeDAO;
import com.sreebhog.interfaces.LoginRequired;
import com.sreebhog.model.dto.Employee;
import com.sreebhog.utility.Cryptography;

public class LoginAction extends ActionSupport implements SessionAware,LoginRequired {

private String loginUserName;
private String loginPassword;

SessionMap sessionMap;

@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void setSession(Map map) {
sessionMap=(SessionMap) map;
sessionMap.put("username", loginUserName);
}

public String execute()
{
String userName = null;
if (sessionMap.containsKey("username"))
{
userName = (String) sessionMap.get("username");
if (userName != null )
{
if (!userName.equals(""))
{
return SUCCESS;
}
}
}

EmployeeDAO employeeDao = new EmployeeDAO();
Employee employee = employeeDao.find(this.getLoginUserName());
if (employee == null || employee.getUserName().equals(""))
{
System.out.println("Here1");
addActionError("Username or password is invalid");
return INPUT;
} else
try {
if (employee.getPassword().equals(Cryptography.getHash("SHA-1", this.getLoginPassword(), employee.getSalt())))
{
System.out.println("Here2");
addActionError("Username or password is invalid");
return INPUT;
}
else {
System.out.println("Here3");
sessionMap.put("username",(String)loginUserName);
sessionMap.put("role",(String)employee.getPermissions().getRole());
return SUCCESS;
}
} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
e.printStackTrace();
}
return INPUT;
}

public void validate()
{

if (loginUserName == null || loginUserName.equals("") || loginPassword == null || loginPassword.equals(""))
{
addActionError("Please fill in username and password");
}
}

public String logout()
{
sessionMap.invalidate();
return INPUT;
}

public String getLoginUserName() {
return loginUserName;
}

public void setLoginUserName(String loginUserName) {
this.loginUserName = loginUserName;
}

public String getLoginPassword() {
return loginPassword;
}

public void setLoginPassword(String loginpassword) {
this.loginPassword = loginpassword;
}

}

Вот мой LoginInterceptor:
package com.sreebhog.interceptors;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.sreebhog.actions.LoginAction;
import com.sreebhog.interfaces.LoginRequired;

public class LoginInterceptor extends AbstractInterceptor {

@Override
public String intercept(final ActionInvocation invocation) throws Exception {
Map session = ActionContext.getContext().getSession();
String userName = (String) session.get("username");

if (userName != null && !userName.equals("")) {
return invocation.invoke();
}

Object action = invocation.getAction();

if (!(action instanceof LoginRequired)) {
return invocation.invoke();
}

if (!(action instanceof LoginAction)) {
return "loginRedirect";
}

return invocation.invoke();
}
}


Подробнее здесь: https://stackoverflow.com/questions/151 ... -in-struts
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»