Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Struts и форма с n -ым кол-вом полей? / 8 сообщений из 8, страница 1 из 1
29.03.2006, 07:56
    #33631144
cub
cub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Struts и форма с n -ым кол-вом полей?
Данные из БД выводятся на форму INPUT 'ы (пример: fam_1,im_1,ot_1- 1стр ... fam_n,im_n,ot_n- n-ая строка) также у каждой стоки есть признаки действия checkbox ( del_1, edit_1- 1стр … del_n, edit_n n -стр). Каким образом можно сформировать/обработать такую форму c использование Struts, ведь FormAction должен иметь set и get методы для каждого поля, а их n-ое кол-во? Если FormAction исключить вылезает ошибка, создавать пустой FormAction или чего?
...
Рейтинг: 0 / 0
29.03.2006, 08:14
    #33631160
ponomarevvb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Struts и форма с n -ым кол-вом полей?
Может, использоватьформу с Map в качестве хранилища свойств? (map-backed form, кажется, называыется, если соберётесь гуглить).
Типа такого:

TestForm.java:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
 public   class  EmployeeForm  extends 
{
	 private   static   final   long  serialVersionUID = -4870175756484249335L;

	/** Employee properties. */
	 protected  Map props =  new  HashMap();
	
	
	 public   void  setProperties(Map properties)
	{
		 this .props = properties;
	}

	 public  Map getProperties()
	{
		 return  props;
	}

	 public  Object getValue(String key)
	{
		Object p = props.get(key);
		 return  p;
	}

	 public   void  setValue(String key, Object value)
	{
		props.put(key, value);
	}
}

TestPage.jsp
Код: plaintext
1.
2.
3.
4.
5.
6.
…
<html:form action = "edit.do">
	<html:text property = "value(name1)"/>
	<html:text property = "value(name2)"/>
	…
</html:form>
nameN - ключи в карте. Я думаю, можно даже заключить <html:text> в <logic:iterate> и пробежаться по всем ключам, но не уверен, попробовать негде.
--С уважением, ponomarevvb--
...
Рейтинг: 0 / 0
29.03.2006, 08:17
    #33631161
Struts и форма с n -ым кол-вом полей?
Переопределеите для формы метод ActionForm#reset и ватыскивайте в нем нужные параметры из HttpServletRequest'а.

Если порядок следования параметров никакой роли не играет, можно назначить всем input'ам одинаковые имена (name), а в From'е определить метод setName(String[]) - получите массив введенных значений.
...
Рейтинг: 0 / 0
29.03.2006, 10:57
    #33631568
Tomaso
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Struts и форма с n -ым кол-вом полей?
Smotri v storonu nested tagov
...
Рейтинг: 0 / 0
29.03.2006, 15:21
    #33632747
maddcast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Struts и форма с n -ым кол-вом полей?
Не надо ничего переопределять. Не надо использовать никаких Properties. И уж, тем более, nested tags не решат проблемы. Периодически сталкиваюсь с подобной задачей и терпеть её не могу. Стандартного решения нет, потому что есть несколько проблем, которые решать можно по-разному. Советую в класс формы добавить всего одно свойство: массив или список всех значений. Саму форму держать в сессии (правда может возникнуть проблема с checkbox, тогда надо немного другим путём идти), главное, чтобы в любой момент обращения к классу формы элементы не были нулевыми. Затем в jsp, в цикле <html:text property="list[${index}].text"><html:checkbox property="list[${index}].check">. ${index} можно считать как угодно, это наименее важная вещь.
...
Рейтинг: 0 / 0
30.03.2006, 05:28
    #33633937
cub
cub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Struts и форма с n -ым кол-вом полей?
maddcast, можете показать примерчик и почему метод ponomarevvbиспользование map-backed form не подходит, помойму он похож или я чего-то недогоняю?
...
Рейтинг: 0 / 0
30.03.2006, 12:13
    #33634658
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Struts и форма с n -ым кол-вом полей?
maddcastЗатем в jsp, в цикле <html:text property="list[${index}].text"><html:checkbox property="list[${index}].check">. ${index} можно считать как угодно, это наименее важная вещь.
У тега <logic:iterate> есть атрибут indexId, который инициализирует переменную - счетчик. Т.е. можно примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 public   class  TestForm   extends  ValidatorForm {

   private  List items;

   public  List getItems() {  return  items; }

   public   void  setItems(List items) {  this .items = items; }
}
Код: plaintext
1.
2.
3.
4.
<logic:iterate id="item" name="testForm" property="items" indexId="index">
  <bean:write name="item" property="caption"/>
  <html:text property='<%="items[" + index + "].value" %>'/>
</logic:iterate>
где value - атрибут класса, добавленного в список items . Инициализировать список можно в action'е перед показом jsp. Класть форму действительно приходится в сессию.

С checkbox'ами одна проблема - если на странице они скинуты, то просто не будут указаны в пришедшем request'е. Поэтому неплохо в форму дописать метод по сбрасыванию их всех, а нужные будут установлены:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public   class  TestForm   extends  ValidatorForm {

   private  List items;

  ...
  
   public   void  reset(ActionMapping mapping, HttpServletRequest request) {
     for  (Iterator it = items.iterator(); it.hasNext();) {
      MyClass myClass = (MyClass)it.next();
      // Предположим, что есть свойство boolean myClass.myValue
      myClass.myValue = false;
    }
  }
}
...
Рейтинг: 0 / 0
30.03.2006, 14:51
    #33635293
maddcast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Struts и форма с n -ым кол-вом полей?
За совет с reset спасибо. Я не знал, как лучше решить эту проблему.

Примеры постараюсь выложить.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Struts и форма с n -ым кол-вом полей? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]