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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с созданием Tapestry компонента, Parameter 'dateBegin' is not bound and c 
:(
    Опции темы
Strange74
Дата 11.6.2007, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хочу создать Tapestry компонент - DatePeriodPicker. Суть в чем - есть два поля DatePicker dateBegin и dateEnd соответственно значения из полей должны выставляться и передаваться.

Вот html компонента:
Код

<html>
<body jwcid="$content$">
  <div id="picker">
      <div id="datel"><input type="text" jwcid="dateBegin"/> Begin date</div>
      <div id="date2"><input type="text" jwcid="dateEnd"/> End date</div>
  </div>
</body>
</html>


DatePeriodPicker.jwc:

Код

<?xml version="1.0"?>
<!DOCTYPE component-specification PUBLIC
"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<component-specification allow-body="no" class="org.beq.tapestry.components.DatePeriodPicker">
    <parameter name="dateBegin" required="no"/>
    <parameter name="dateEnd" required="no"/>
    <component id="dateBegin" type="DatePicker">
        <binding name="value" value="dateBegin"/>
        <binding name="translator" value="translator:date,pattern=dd/MM/yyyy"/>
    </component>
    <component id="dateEnd" type="DatePicker">
        <binding name="value" value="dateEnd"/>
        <binding name="translator" value="translator:date,pattern=dd/MM/yyyy"/>
    </component>
</component-specification>


Вот код java класса:
Код

package org.beq.tapestry.components;

import java.util.Date;

import org.apache.tapestry.BaseComponent;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle;

public abstract class DatePeriodPicker extends BaseComponent {

    public abstract Date getDateBegin();    
    public abstract void setDateBegin(Date dateBegin);
    

    public abstract Date getDateEnd();
    public abstract void setDateEnd(Date dateEnd);

    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) {
        super.renderComponent(writer, cycle);
    }
}


Вызываю в Home.html:
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>DatePeriodPicker Test</title>
<script type="text/javascript" src="/DatePeriodPicker/app?service=asset&amp;path=%2Fdojo%2Fdojo.js"></script>
</head>
<body jwcid="@Body">
    <form jwcid="form">
        <input type="text" jwcid="datePeriodPicker"/>
        <br/>
        <input type="submit"/>
    </form>
    </body>
</html>


вот Home.page:
Код

<?xml version="1.0"?>
<!DOCTYPE page-specification PUBLIC
"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<page-specification class="org.beq.tapestry.DatePeriodPickerDemo.Home">
    <component id="datePeriodPicker" type="DatePeriodPicker">
        <binding name="value" value="dateBegin"/>
        <binding name="value" value="dateEnd"/>
    </component>
    <component id="form" type="Form">
        <binding name="listener" value="listener:onSubmit"/>
    </component>
</page-specification>


Вот Home.java:

Код

package org.beq.tapestry.DatePeriodPickerDemo;

import java.util.Date;

import org.apache.tapestry.IPage;
import org.apache.tapestry.annotations.InjectPage;
import org.apache.tapestry.html.BasePage;

public abstract class Home extends BasePage {

    // Получение параметров
    @InjectPage("Result")
    public abstract IPage getResult();
    public abstract Date getDateBegin();
    public abstract Date getDateEnd();

    public IPage onSubmit() {
        IPage resultPage = getResult();
        
        return resultPage;
    }
    
}



В принципе все делаю как написано в книге EnjoyWebDevWithTapestry. Компонент рисуется но после нажатия на кнопку я получаю вот такой эксепшн:

Код

Unable to update OGNL expression '<parsed OGNL expression>' of $DatePeriodPicker_1@9bd09361[Home/datePeriodPicker] to null: Method "setDateBegin" failed for object $DatePeriodPicker_1@9bd09361[Home/datePeriodPicker] org.apache.tapestry.BindingException
Unable to update OGNL expression '<parsed OGNL expression>' of $DatePeriodPicker_1@9bd09361[Home/datePeriodPicker] to null: Method "setDateBegin" failed for object $DatePeriodPicker_1@9bd09361[Home/datePeriodPicker]
binding:    ExpressionBinding[Home/datePeriodPicker dateBegin] 
location:    context:/WEB-INF/DatePeriodPicker.jwc, line 9, column 44    4    "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
5    <component-specification allow-body="no" class="org.beq.tapestry.components.DatePeriodPicker">
6    <parameter name="dateBegin" required="no"/>
7    <parameter name="dateEnd" required="no"/>
8    <component id="dateBegin" type="DatePicker">
9    <binding name="value" value="dateBegin"/>
10    <binding name="translator" value="translator:date,pattern=dd/MM/yyyy"/>
11    </component>
12    <component id="dateEnd" type="DatePicker">
13    <binding name="value" value="dateEnd"/>
14    <binding name="translator" value="translator:date,pattern=dd/MM/yyyy"/>

  

[ +/- ] Exception:
Unable to update OGNL expression '<parsed OGNL expression>' of $DatePeriodPicker_1@9bd09361[Home/datePeriodPicker] to null: Method "setDateBegin" failed for object $DatePeriodPicker_1@9bd09361[Home/datePeriodPicker] org.apache.hivemind.ApplicationRuntimeException
Unable to update OGNL expression '<parsed OGNL expression>' of $DatePeriodPicker_1@9bd09361[Home/datePeriodPicker] to null: Method "setDateBegin" failed for object $DatePeriodPicker_1@9bd09361[Home/datePeriodPicker]
component:    $DatePeriodPicker_1@9bd09361[Home/datePeriodPicker] 
location:    context:/WEB-INF/Home.page, line 6, column 59    1    <?xml version="1.0"?>
2    <!DOCTYPE page-specification PUBLIC
3    "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
4    "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
5    <page-specification class="org.beq.tapestry.DatePeriodPickerDemo.Home">
6    <component id="datePeriodPicker" type="DatePeriodPicker">
7    <binding name="value" value="dateBegin"/>
8    <binding name="value" value="dateEnd"/>
9    </component>
10    <component id="form" type="Form">
11    <binding name="listener" value="listener:onSubmit"/>

  

[ +/- ] Exception:
Method "setDateBegin" failed for object $DatePeriodPicker_1@9bd09361[Home/datePeriodPicker] 
[ +/- ] Exception:
Parameter 'dateBegin' is not bound and can not be updated. org.apache.hivemind.ApplicationRuntimeException
Parameter 'dateBegin' is not bound and can not be updated.
Stack Trace:
$DatePeriodPicker_1.setDateBegin($DatePeriodPicker_1.java) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
java.lang.reflect.Method.invoke(Method.java:597) 
ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:532) 
ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:826) 
ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:978) 
ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:75) 
ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:131) 
ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1670) 
ognl.ASTProperty.setValueBody(ASTProperty.java:101) 
ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177) 
ognl.SimpleNode.setValue(SimpleNode.java:246) 
ognl.Ognl.setValue(Ognl.java:476) 
org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.writeCompiled(ExpressionEvaluatorImpl.java:132) 
$ExpressionEvaluator_113196e125c.writeCompiled($ExpressionEvaluator_113196e125c.java) 
org.apache.tapestry.binding.ExpressionBinding.setObject(ExpressionBinding.java:170) 
$DatePicker_2.setValue($DatePicker_2.java) 
org.apache.tapestry.form.DatePicker.rewindFormComponent(DatePicker.java:198) 
org.apache.tapestry.form.AbstractFormComponent.renderComponent(AbstractFormComponent.java:94) 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:710) 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:174) 
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:92) 
org.beq.tapestry.components.DatePeriodPicker.renderComponent(DatePeriodPicker.java:33) 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:710) 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:174) 
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:523) 
org.apache.tapestry.form.FormSupportImpl.rewind(FormSupportImpl.java:612) 
org.apache.tapestry.form.Form.renderComponent(Form.java:205) 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:710) 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:174) 
org.apache.tapestry.form.Form.rewind(Form.java:278) 
org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:460) 
org.apache.tapestry.form.Form.trigger(Form.java:289) 
org.apache.tapestry.engine.DirectService.triggerComponent(DirectService.java:170) 
org.apache.tapestry.engine.DirectService.service(DirectService.java:146) 
$IEngineService_113196e11ce.service($IEngineService_113196e11ce.java) 
org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:72) 
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:246) 
org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:54) 
$WebRequestServicer_113196e11a5.service($WebRequestServicer_113196e11a5.java) 
$WebRequestServicer_113196e11a1.service($WebRequestServicer_113196e11a1.java) 
org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:61) 
$ServletRequestServicer_113196e1187.service($ServletRequestServicer_113196e1187.java) 
org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55) 
$ServletRequestServicerFilter_113196e1183.service($ServletRequestServicerFilter_113196e1183.java) 
$ServletRequestServicer_113196e1189.service($ServletRequestServicer_113196e1189.java) 
org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52) 
$ServletRequestServicerFilter_113196e1181.service($ServletRequestServicerFilter_113196e1181.java) 
$ServletRequestServicer_113196e1189.service($ServletRequestServicer_113196e1189.java) 
org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53) 
$ServletRequestServicerFilter_113196e1185.service($ServletRequestServicerFilter_113196e1185.java) 
$ServletRequestServicer_113196e1189.service($ServletRequestServicer_113196e1189.java) 
$ServletRequestServicer_113196e0ff5.service($ServletRequestServicer_113196e0ff5.java) 
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123) 
org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:168) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:709) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) 
java.lang.Thread.run(Thread.java:619)


Дело в том что с Tapestry Только начал разбираться, но этот setDateBegin меня уже достал. Я не могу понять толи из компонента нельзя возвращать 2 значения то-ли что. Подскажите пожалуйста в чем может быть трабла или хотя бы в какую сторону копать? Я уже и убирал описание методов getBeginDate, getEndDate из Home.java и делал getDatePeriodPicker естественно описав его в Home.page - не помогает! Я в отчаянии.

Это сообщение отредактировал(а) Strange74 - 11.6.2007, 09:35
PM MAIL WWW 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.0725 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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