2016-03-19 5 views
-3

Надеюсь, что кто-то может дать подсказку, где искать источник проблемы.Struts 2 location

Класс Войти Действие

enter code here 

@Namespace("/") 
public class LoginAction extends ActionSupport { 
private static final long serialVersionUID = 1L; 

@Override 
@Action(value = "/welcome", results = { @Result(name = SUCCESS, location = "/WEB-INF/content/welcome.jsp") }) 

When I exectute my index.jsp to execute welcome.jsp didn't work. 

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"> 
<%@ taglib uri="/struts-tags" prefix="s"%> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> 
    <title>Login Page</title> 
</head> 
<body> 
    <h3>Welcome to Struts 2</h3> 
<s:form action="home"> 
    <s:textfield name="username" label="User Name"></s:textfield> 
    <s:textfield name="password" label="Password" type="password">  </s:textfield> 
    <s:submit value="Login"></s:submit> 
</s:form> 
</body> 
</html> 

welcome.jsp

enter code here 

<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%@ taglib uri="/struts-tags" prefix="s"%> 

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=IUTF-8"> 
<title>Welcome To Struts 2</title> 
</head> 
<body> 
    <h3> 
     Welcome 
     <s:property value="username"></s:property> 
    ! 
    </h3> 
</body> 

Результат Struts Сообщить о проблеме

Struts обнаружил необработанное исключение:

Сообщения:

There is no Action mapped for namespace [/] and action name [home] associated with context path [/struts]. 
+1

Отправьте код, отредактировав вопрос, а не через комментарий. Кроме того, код имеет другую ошибку, а не изображение. Вы должны уточнить этот вопрос. Я уверен, что источником проблемы является отображение действий. –

+0

Пожалуйста, разместите текст, а не изображения. –

+0

взгляните на это: http://stackoverflow.com/questions/21097002/struts-2-there-is-no-action-mapped-for-namespace? – sclv

ответ

-1

Решение.

В моем index.jsp я написал «home» в действии тега, form action = «home». Правильно одно и то же имя в Action.

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> 
    <title>Login Page</title> 
    </head> 
    <body> 
     <h3>Welcome to Struts 2</h3> 
     <s:form action="home"> **The correct is "welcome"** 
     <s:textfield name="username" label="User Name"></s:textfield> 
     <s:textfield name="password" label="Password" type="password"> </s:textfield> 
     <s:submit value="Login"></s:submit> 
    </s:form> 
    </body> 
</html> 

И в моем LoginAction я использовал значение = "/ приветствовать".

package web.actions; 

@Action(value = "/welcome", results = { @Result(name = SUCCESS, location = "/WEB-INF/content/welcome.jsp") }) 

public String execute() throws Exception { 
    return SUCCESS; 
} 

messagem очень ясно.
Не существует Action, сопоставленного для пространства имен [/] и имени действия [home], связанного с контуром пути [/ struts].

Но я только что видел ошибку, делающую много примеров.

+0

Обычно на SO вопрос имеет неправильный код, и ответ содержит правильный. Но я думаю, что вы не писали верный даже в комментариях, где вы заявляете о своей правильности. –

+0

Также этот ответ выглядит как редактирование вопроса. Пожалуйста, разделите ответ и вопрос, предоставляющий кредит автору. –

0

В Struts2 вы сопоставляете форму с конфигурацией действия, используя атрибуты s:form тега action и namespace.

Обычно атрибут действия принимает имя действия, но может содержать URL-адрес. Тег формы отображается шаблоном в HTML form, где атрибут действия должен быть URL.

Так что Struts получает имя действия и генерирует URL. Вы можете увидеть исходный код в браузере. Когда запрос сделан Struts2 использует URI запроса, чтобы найти сопоставление действий, как описано here.

Обычно ошибка 404 приводит к отсутствию конфигурации действий на сервере, которая соответствует запрошенному URI. Когда вы отправили форму, запрос сделан и запрашивается ресурс, но конфигурационный файл не найден, поэтому Struts2 возвращает ошибку 404.

Вам не нужно использовать аннотации, если вы используете соглашения или плагины для отдыха, но аннотация всегда позволяет вручную переопределять значения по умолчанию.

По умолчанию пути результатов /WEB-INF/contents/ и имя действия без косых черт, так что вы можете использовать аннотацию:

@Action(value = "welcome", results = @Result(location = "welcome.jsp")) 

Вы можете найти ссылки на интернет-ресурсы от this ответа.

Один из учебных пособий read this tutorial.