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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Tapestry и ExtJS, Возникли проблемы при внедрении 
V
    Опции темы
Molodec
  Дата 14.1.2011, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброго времени суток!
Есть проект на Tapestry. Он представляет собою модифицированный проект, который разбирается в этой статье:
Пишем веб-приложение на Java с помощью современного компонентного фреймворка
Модификация заключается в добавлении валидаторов к полям. При внедрении ExtJS в проект Tapestry начинает жаловаться и на валадаторы и на другие функции. 
Скриншот:
user posted image
Хотя если ввести все правильно, то пользователь попадет на желаемую страницу. Но все же хотелось бы чтобы и валидаторы работали и все было более стабильно... Чтобы не выскакивали ошибки... Если проблема только в валидаторах была бы... То я их просто убрал бы, так тут ему еще что-то не нравится. Вдруг в других случаях эта ошибка потянет за собой какие то сбои, проблемы и т.д. 
Может кто знает как ее можно устранить? 
Заранее спасибо. 
Разметка страницы(Index.tml):
Код

<html>
    <script type="text/javascript" language="Javascript">
        Ext.onReady(function() {
            var win = new Ext.Window({
                width:500,
                height:450,
                title: 'Авторизация',
                html:'<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter"><head></head><body><center><h2>'+
                    '<i>Вам необходимо <b>авторизоваться</b> или зайти под имеющейся учётной записью</i>'+
                    '</h2><br/><img src="http://nadavi.net/img/pict_login.gif"/></center>'+
                    '<t:form t:id="loginForm"><table><tr><td><t:label t:for="loginField"/></td><td><t:textfield t:id="loginField" t:value="login" t:label="message:login" t:validate="required"/></td></tr>'+
                    '<tr><td><t:label t:for="passwordField"/></td><td><t:passwordfield t:id="passwordField" t:value="password" t:label="message:password" t:validate="required, minlength=5"/>'+
                    '</td></tr><tr><td><t:submit t:value="message:log-in"/></td></tr></table></t:form></body></html>',
                layout:'fit',
                bbar:
                    [{
                        xtype:'button',
                        id: 'card-next',
                        text: 'Подтвердить ввод',
                        minWidth: 50,
                    }],
                bodyStyle:{'background-color': '#FFFFFF'}
            })
            win.show();
        })
    </script>
</html>

Код страницы(Index.java):
Код

package com.mycompany.pages;


import com.mycompany.entities.User;
import org.apache.tapestry5.annotations.Import;
import org.apache.tapestry5.annotations.InjectPage;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

@Import(library = {"/../components/ExtJS/adapter/ext/ext-base.js","/../components/ExtJS/ext-all.js"},stylesheet="/../components/ExtJS/resources/css/ext-all.css")
public class Index {

    @Property
    private String login;
    @Property
    private String password;

    @InjectPage
    private Welcome welcome;

    @InjectPage
    private Register register;

    @Inject
    private Session session;

    public Object onSubmitFromLoginForm() {
        Criteria criteria = session.createCriteria(User.class)
                .add(Restrictions.eq("login", login))
                .add(Restrictions.eq("password", password));
        if (!criteria.list().isEmpty()) {
            return welcome;
        }
        return register;
    }
}

P.S. Будут очень полезны хоть какие-нибудь предположения на этот счёт...

PM MAIL   Вверх
Molodec
Дата 17.1.2011, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Еще одна проблема возникла. Tapestry требует, чтобы все теги закрывались. То есть, даже унарные. Нельзя чтобы был тег <hr>, он должен выглядеть где-то так - <hr/>. Когда все теги закрываются страничка может быть отображена. Если хоть один тег не закрывается - Tapestry выдает ошибку и не открывает страничку.
Так вот, у меня страничка загружается, но я хочу организовать возможность нажатий на несколько кнопок, которые приведут к одному и тому же действию - автоматически будет нажата кнопка submit и все данные пойдут на сервер. Казалось бы просто:
Код

getElementById("ds").click(); 

Но тут всплывает самый неприятный подводный камень - кнопка submit генерируется BeanEdit формой. И у нее нет Id или же Name. Следовательно, стандартными средствами мы не как не можем к ней обратиться. На помощь приходят пользовательские функции:
Код

var allTags=new Array();

function getClass(theClass,node,tag,stl,ord) {

if (node==null) node=document;
if (tag==null) tag='*';

var allTags=node.getElementsByTagName(tag);

    for (i=0; i<allTags.length; i++) {

        if (allTags[i].className==theClass) {

        eval('allTags[i].style.'+stl+'=ord');

        }
    }
}

Но Tapestry, видимо, предполагает, что какие то теги там не закрыты так как выдает следующую ошибку:

Код

An unexpected application exception has occurred.
org.apache.tapestry5.ioc.internal.OperationException
Failure parsing template classpath:com/mycompany/pages/Register.tml: Element type "allHTMLTags.length" must be followed by either attribute specifications, ">" or "/>".
location:
classpath:com/mycompany/pages/Register.tml, line 2419    
20                //Create Array of All HTML Tags
21                var allHTMLTags=document.getElementsByTagName('*');
22    
23                //Loop through all tags using a for loop
24                for (i=0; i<allHTMLTags.length; i++) {
25    
26                    //Get all tags with the specified class name.
27                    if (allHTMLTags[i].className==theClass) {
28    
29                        //Place any code you want to apply to all

trace:
Constructing instance of page class com.mycompany.pages.Register
Creating ComponentAssembler for com.mycompany.pages.Register
Parsing component template classpath:com/mycompany/pages/Register.tml
org.xml.sax.SAXParseException
Element type "allHTMLTags.length" must be followed by either attribute specifications, ">" or "/>".

Подчеркнута 24 линия. 
Кто знает как испраить проблему, или же другой способ обратиться к классу, пожалуйста, отпишитесь. 
Заранее благодарен.
PM MAIL   Вверх
Molodec
  Дата 20.1.2011, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Проблема решена. Нужно было положить всю разметку в div и в свойстве ContentEI формы, указать ID этого div. 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0445 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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