Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хелп со STRUTS 
V
    Опции темы
ylims
Дата 11.4.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 28.2.2007

Репутация: нет
Всего: нет



имеется  JSP-ka: 
Код

.....
<html:form action="addUser.do">
   <html:text property="field"/>
  <html:submit value="Добавить" property="Submit"/>
 </html:form>
.....


Struts-config.xml
Код

<?xml version="1.0" encoding="WINDOWS-1251"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
    <form-beans>
        <form-bean name="uploadForm" type="inteface.addNewUser.beans.Form"/>
    </form-beans>
    <action-mappings>
    <action
        path="/addUser"
        name="uploadForm"
        scope="request"
        validate="false"
        type="inteface.addNewUser.AddUserAction">
       <forward   name="done"  path="/userAdd.jsp"/>
       <forward   name="error"  path="/main.jsp"/>
     </action>
  </action-mappings>
</struts-config>


описанный в struts-config BEAN содержит стандартные get set.

Вопрос следующий, в каком месте мне сделать запись данных из формы в БД, и как ? 
(Если из Action то как получить данные из бина)

Добавлено через 11 минут и 32 секунды
Вопрос снят. разобрался )
--------------------
ЦитатаНу и запросы у вас - сказала база данных и повисла.
PM MAIL ICQ   Вверх
BlackD
Дата 11.4.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 3.10.2005

Репутация: 1
Всего: 1



ActionForms represent request data coming from the browser. ActionForms are used to populate HTML forms to
display to end users and to collect data from HTML forms. In order to create an ActionForm, you need to follow
these steps:

1. Create a new class in the strutsTutorial package called UserRegistrationForm that subclasses
org.apache.struts.action.ActionForm as follows:
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
import javax.servlet.http.HttpServletRequest;
public class UserRegistrationForm extends ActionForm {

2. Now you need to create JavaBean properties for all the fields that you want to collect from the HTML
form. Let’s create firstName, lastName, userName, password, passwordCheck (make sure they
entered the right password), e-mail, phone, fax and registered (whether or not they are already registered)
properties. Add the following fields:
private String firstName;
private String lastName;

Add getter and setter methods for each field as follows:
public String getEmail() {
return email;
}
public void setEmail(String string) {
email = string;
}

3. Next you need validate the user entered valid values. In order to do this, you need to override the
validate method as follows:
public ActionErrors validate(
ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (firstName==null
|| firstName.trim().equals("")){
errors.add("firstName",
new ActionError(
"userRegistration.firstName.problem"));
}
...
return errors;
}


Я вчера с этим разбирался smile В общем, если юзаешь tags, то создаешь класс, наследуемый от ActionForm. При нажании на кнопку, ответ из браузера(вместе со всеми данными от тегов, например <html:text property="field"/>), переходит в этот класс. Нам обычно эти данные обрабатываются, и если они нас удовлетворяют (validate), то дальше все переходит в Action. 
Создай класс, наследуемый от ActionForm, там записывай данные в базу. В конфиге сделай из него бин, в <action сяжи его со страницей ввода и все вроде.

А вообще, посмотри в книге Jakarta Struts Live, если есть. Там отличный пример.


Опоздал.... :(

Это сообщение отредактировал(а) BlackD - 11.4.2007, 12:05
PM MAIL   Вверх
ylims
Дата 12.4.2007, 03:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 28.2.2007

Репутация: нет
Всего: нет



BlackD прикинь запоролся на том же что и ты, вылетает 
Код

javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection
.....

хотя вроде всё верно, и всё работало, не понял чего вдруг стало вылетать

Struts-config
Код

<struts-config>
    <form-beans>
        <form-bean name="uploadForm" type="inteface.addNewUser.beans.Form"/>
    </form-beans>
    <action-mappings>
    <action
        path="/addUser"
        type="inteface.addNewUser.AddUserAction"
        name="uploadForm"
        scope="request"
        input="/userAdd.jsp"
        validate="false">
       <forward   name="done"  path="/userAdd.jsp"/>
       <forward   name="error"  path="/main.jsp"/>
     </action>
  </action-mappings>
</struts-config>


web.xml
Код

<web-app>
    <servlet>
        <servlet-name>InStrax</servlet-name>
        <servlet-class>inDb.InStrax</servlet-class>
    </servlet>

    <servlet>
     <servlet-name>action</servlet-name>
     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
     <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
     </init-param>
    </servlet>

    <servlet-mapping>
            <servlet-name>InStrax</servlet-name>
            <url-pattern>/writeInStrax</url-pattern>

            <servlet-name>action</servlet-name>
            <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <taglib>
       <taglib-uri>/tags/struts-html</taglib-uri>
       <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    </taglib>
    <taglib>
       <taglib-uri>/tags/struts-bean</taglib-uri>
       <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib>
    <taglib>
       <taglib-uri>/tags/struts-logic</taglib-uri>
       <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
  </taglib>
</web-app>


класс inteface.addNewUser.beans.Form
Код

package inteface.addNewUser.beans;
import org.apache.struts.action.ActionForm;
import dbConnect.db;
import encode.Encode;
import java.sql.SQLException;

public class Form extends ActionForm{
    String f;
    public String getF () {
     return this.f != null ? this.f: "";
    }
    public String setF ( String f) {
     this.f=f;
    }


Action
Код

public class AddUserAction extends Action {
    public ActionForward execute(ActionMapping mapping,
           ActionForm form,
           HttpServletRequest request,
           HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException
    {
      if (request.getParameter("f").equals("")) {
            return mapping.findForward("error");
        }
     else {
            //Form upForm=(Form)form;
            //try {
            //     upForm.addUser();
            //} catch (SQLException e) {
             //    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
             /// }
            return mapping.findForward("done");
         }

   }
}


Добавлено через 11 минут и 25 секунд
сори пометил как решённый, щас снял
--------------------
ЦитатаНу и запросы у вас - сказала база данных и повисла.
PM MAIL ICQ   Вверх
tux
Дата 12.4.2007, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Причинами могут быть следующие:
  • в WEB-INF/lib не хватает библиотек, нужных Struts. Посмотри к нему в дистрибутив и возьми все оттуда
  • в странице JSP может быть какая-то ссылка, описанная тэгами <html:form> или <html:link>, а в struts-config.xml такой ссылки нет
  • и еще много-много, диагностика проблем в Struts не на высоте
Поэтому проверяй корректность всего, что есть в приложении, точнее диагностировать вряд ли получится.
PM MAIL Skype GTalk Jabber YIM   Вверх
ylims
Дата 12.4.2007, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 28.2.2007

Репутация: нет
Всего: нет



ошибка вылазит очевидно из-за тега
Код

<html:form action="addUser.do">

т.е если заменить его на стандартный форм то страница грузиться
--------------------
ЦитатаНу и запросы у вас - сказала база данных и повисла.
PM MAIL ICQ   Вверх
tux
Дата 12.4.2007, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Так напиши:
Код

<html:form action="/addUser">

PM MAIL Skype GTalk Jabber YIM   Вверх
ylims
Дата 12.4.2007, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 28.2.2007

Репутация: нет
Всего: нет



Код

<%@ page contentType="text/html;charset=windows-1251" language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html:html>
 <head>
  <title>Добавлениепользователя</title>
  <style type="text/css">@import url("stylesheet.css");</style>
 </head>
 <body>

  <html:form action="/addUser">
    <html:text property="field"/>
    <html:submit/>
  </html:form>
  </body>
</html:html>


всё равно такая же ошибка. млин чо за ф..гня, всёж вроде правильно
--------------------
ЦитатаНу и запросы у вас - сказала база данных и повисла.
PM MAIL ICQ   Вверх
ylims
Дата 12.4.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 28.2.2007

Репутация: нет
Всего: нет



млин добавил в web.xml
Код

<web-app>
    <servlet>
     <servlet-name>action</servlet-name>
     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
     <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
     </init-param>
     <init-param>
       <param-name>debug</param-name>
       <param-value>2</param-value>
     </init-param>
     <init-param>
        <param-name>detail</param-name>
        <param-value>2</param-value>
     </init-param>
     <load-on-startup>2</load-on-startup>   

    </servlet>
....

вроде заработало, а что они означают?
--------------------
ЦитатаНу и запросы у вас - сказала база данных и повисла.
PM MAIL ICQ   Вверх
BlackD
Дата 12.4.2007, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 3.10.2005

Репутация: 1
Всего: 1



у тебя
Код

package inteface.addNewUser.beans;    
import org.apache.struts.action.ActionForm;    
import dbConnect.db;    
import encode.Encode;    
import java.sql.SQLException;    
public class Form extends ActionForm{    
    String f;    
    public String getF () {    
     return this.f != null ? this.f: "";    
    }    
    public String setF ( String f) {    
     this.f=f;    
    }

Попробуй поменять имя переменной f на field. У тебя же <html:text property="field"/>, так откуда оно знает, что f - это field.
PM MAIL   Вверх
kkorsakoff
Дата 12.4.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 6
Всего: 14



У тебя не было load-on-startup. Один раз случайно удалил строку, промучился пару дней. Причем ошибки выскакивали в совершенно неожиданных местах с совершенно необъяснимым описание и стектрейсом
PM MAIL WWW ICQ   Вверх
ylims
Дата 13.4.2007, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 28.2.2007

Репутация: нет
Всего: нет



Цитата(BlackD @ 12.4.2007,  11:38)
у тебя
Код

package inteface.addNewUser.beans;    
import org.apache.struts.action.ActionForm;    
import dbConnect.db;    
import encode.Encode;    
import java.sql.SQLException;    
public class Form extends ActionForm{    
    String f;    
    public String getF () {    
     return this.f != null ? this.f: "";    
    }    
    public String setF ( String f) {    
     this.f=f;    
    }

Попробуй поменять имя переменной f на field. У тебя же <html:text property="field"/>, так откуда оно знает, что f - это field.

сорри я ошибся просто, у мя везде поле называется f, так что не в этом проблема
BLACKD слушай просьба такая можеш мне выложить рабочий пример который ты сделал с ActionForm.

Добавлено через 2 минуты и 7 секунд
Цитата(kkorsakoff @ 12.4.2007,  12:03)
У тебя не было load-on-startup. Один раз случайно удалил строку, промучился пару дней. Причем ошибки выскакивали в совершенно неожиданных местах с совершенно необъяснимым описание и стектрейсом

после добывления данной строки, страница грузиться но при сабмите всё равно вылазит
Код

HTTP Status 500 - No action instance for path /addUser could be created

--------------------------------------------------------------------------------

type Status report

message No action instance for path /addUser could be created

description The server encountered an internal error (No action instance for path /addUser could be created) that prevented it from fulfilling this request.


--------------------------------------------------------------------------------

Apache Tomcat/5.0.28

--------------------
ЦитатаНу и запросы у вас - сказала база данных и повисла.
PM MAIL ICQ   Вверх
ylims
Дата 13.4.2007, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 28.2.2007

Репутация: нет
Всего: нет



всё, всем спасибо, разобрался. Ошибка глупейшая, не верно указал Package где находился Action, поэтому и не находил асtion
 (вот я д..блоид  smile )

Это сообщение отредактировал(а) ylims - 13.4.2007, 10:58
--------------------
ЦитатаНу и запросы у вас - сказала база данных и повисла.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.