Nothing is jumping out at me.

Some things to try / ask....

Make the t:id match the field name so you don't separately specify it
in the @InjectComponent
Try removing that field and related tml markup and see if you get the
same error on another field.
Is the tml file you are editing really the tml being used?  I've hit
strange stuff with old .class or .tml files in the classpath courtesy
of Eclipse.

Is this something that works when you run it, but only fails in testing?




On Tue, Feb 14, 2012 at 7:19 AM, Julien Martin <bal...@gmail.com> wrote:
> Thanks for replying Jonathan,
>
> Here is the java:
> *package com.bignibou.web.pages.account;*
> *
> *
> *import java.util.List;*
> *
> *
> *import javax.validation.Valid;*
> *import javax.validation.constraints.NotNull;*
> *
> *
> *import org.apache.log4j.Logger;*
> *import org.apache.tapestry5.EventConstants;*
> *import org.apache.tapestry5.Link;*
> *import org.apache.tapestry5.SelectModel;*
> *import org.apache.tapestry5.annotations.AfterRender;*
> *import org.apache.tapestry5.annotations.DiscardAfter;*
> *import org.apache.tapestry5.annotations.InjectComponent;*
> *import org.apache.tapestry5.annotations.InjectPage;*
> *import org.apache.tapestry5.annotations.OnEvent;*
> *import org.apache.tapestry5.annotations.Persist;*
> *import org.apache.tapestry5.annotations.Property;*
> *import org.apache.tapestry5.annotations.SetupRender;*
> *import org.apache.tapestry5.corelib.components.Form;*
> *import org.apache.tapestry5.corelib.components.PasswordField;*
> *import org.apache.tapestry5.corelib.components.TextField;*
> *import org.apache.tapestry5.ioc.Messages;*
> *import org.apache.tapestry5.ioc.annotations.Inject;*
> *import org.apache.tapestry5.json.JSONObject;*
> *import org.apache.tapestry5.services.PageRenderLinkSource;*
> *import org.apache.tapestry5.services.SelectModelFactory;*
> *import org.apache.tapestry5.services.javascript.JavaScriptSupport;*
> *
> *
> *import com.bignibou.domain.ChildMinderStatus;*
> *import com.bignibou.domain.ChildminderAccount;*
> *import com.bignibou.service.AccountService;*
> *import com.bignibou.web.pages.utils.JSonPostcodesWithQueryParam;*
> *
> *
> *public class ChildminderRegistration {*
> *
> *
> * private Logger log = Logger.getLogger(ChildminderRegistration.class);*
> *
> *
> * @Inject*
> * private JavaScriptSupport javaScriptSupport;*
> *
> *
> * @Inject*
> * private PageRenderLinkSource pageRenderLinkSource;*
> *
> *
> * @Property*
> * @Persist*
> * @Valid*
> * private ChildminderAccount childminderAccount;*
> *
> *
> * @Property*
> * private SelectModel childminderStatusSelectModel;*
> *
> *
> * @Inject*
> * private Messages messages;*
> *
> *
> * @Inject*
> * private SelectModelFactory selectModelFactory;*
> *
> *
> * @Property*
> * @NotNull*
> * private String accountPasswordConfirmation;*
> *
> *
> * @Property*
> * private List<ChildMinderStatus> childMinderStatusList;*
> *
> *
> * @Inject*
> * private AccountService accountService;*
> *
> *
> * @InjectComponent("accountEmailAddress")*
> * private TextField accountEmailAddressField;*
> *
> *
> * @InjectComponent("accountPassword")*
> * private PasswordField accountPasswordField;*
> *
> *
> * @InjectComponent("accountPasswordConfirmation")*
> * private PasswordField accountPasswordConfirmationField;*
> *
> *
> * @InjectComponent*
> * private Form childminderRegistrationForm;*
> *
> *
> * @SetupRender*
> * void prepare() {*
> * childminderAccount = new ChildminderAccount();*
> * childMinderStatusList = accountService.loadChildminderStatusList();*
> * childminderStatusSelectModel =
> selectModelFactory.create(childMinderStatusList,
> "childMinderStatusDescription");*
> * }*
> *
> *
> * @AfterRender*
> * void afterRender() {*
> * Link jSonPostcodesWithQueryParamLink =
> pageRenderLinkSource.createPageRenderLink(JSonPostcodesWithQueryParam.class);
> *
> * String link = jSonPostcodesWithQueryParamLink.toAbsoluteURI();*
> * JSONObject specs = new JSONObject();*
> * specs.put("link", link);*
> * javaScriptSupport.addInitializerCall("autocomplete", specs);*
> * }*
> *
> *
> * @OnEvent(value = EventConstants.VALIDATE, component =
> "childminderRegistrationForm")*
> * void validateRegistrationForm() {// TODO: refactor*
> *
> *
> * if
> (!accountService.validateEmailAddress(childminderAccount.getAccountEmailAddress()))
> {*
> * childminderRegistrationForm.recordError(accountEmailAddressField,
> messages.get("invalid-email-address"));// TODO*
> * }*
> *
> *
> * if
> (!accountService.validateEmailAddressDoesNotExist(childminderAccount.getAccountEmailAddress()))
> {*
> * childminderRegistrationForm.recordError(accountEmailAddressField, "email
> existe déjà");*
> * }*
> *
> *
> * if
> (!accountService.validatePasswordsEqual(childminderAccount.getAccountPassword(),
> accountPasswordConfirmation)) {*
> * childminderRegistrationForm.recordError(accountPasswordField, "passwords
> must match");// todo*
> * childminderRegistrationForm.recordError(accountPasswordConfirmationField,
> "passwords must match");// todo*
> * }*
> *
> *
> * if
> (!accountService.validatePasswordStrength(childminderAccount.getAccountPassword()))
> {*
> * childminderRegistrationForm.recordError(accountPasswordField, "passwords
> too weak");// todo*
> * childminderRegistrationForm.recordError(accountPasswordConfirmationField,
> "passwords too weak");// todo*
> * }*
> *
> *
> * if (childminderRegistrationForm.isValid()) {*
> * accountService.registerChildminderAccount(childminderAccount);*
> * successPage.setUp(childminderAccount);*
> * }*
> * }*
> *
> *
> * @InjectPage*
> * private Success successPage;*
> *
> *
> * @DiscardAfter*
> * @OnEvent(EventConstants.SUBMIT)*
> * Object successfulRegistrationForm() {*
> * return successPage;*
> * }*
> *}*
> Here is the tml:
> *<t:childminderlayout xmlns:t="
> http://tapestry.apache.org/schema/tapestry_5_3.xsd";
> xmlns:p="tapestry:parameter"
> t:title="message:childminder-registration-title">*
> * <form t:type="form" t:id="childminderRegistrationForm"
> t:clientValidation="none">*
> * <table class="formTable">*
> * <tr>*
> * <td><label class="right-align" t:type="label" for="accountEmailAddress"
> /></td>*
> * <td><input t:type="textfield" t:id="accountEmailAddress"
> name="accountEmailAddress" value="childminderAccount.accountEmailAddress"
> t:validate="required" /></td>*
> * <td class="error"><t:error for="accountEmailAddress" /></td>*
> * </tr>*
> *
> *
> * <tr>*
> * <td><label class="right-align" t:type="label" for="accountFirstName"
> /></td>*
> * <td><input t:type="textfield" t:id="accountFirstName"
> value="childminderAccount.accountFirstName" /></td>*
> * <td><t:error for="accountFirstName" /></td>*
> * </tr>*
> *
> *
> * <tr>*
> * <td><label class="right-align" t:type="label" for="accountLastName"
> /></td>*
> * <td><input t:type="textfield" t:id="accountLastName"
> value="childminderAccount.accountLastName" /></td>*
> * <td><t:error for="accountLastName" /></td>*
> * </tr>*
> *
> *
> * <tr>*
> * <td><label class="right-align" t:type="label" for="accountPassword"
> /></td>*
> * <td><input t:type="passwordfield" t:id="accountPassword"
> value="childminderAccount.accountPassword" t:validate="required" /></td>*
> * <td><t:error for="accountPassword" /></td>*
> * </tr>*
> *
> *
> * <tr>*
> * <td><label class="right-align" t:type="label"
> for="accountPasswordConfirmation" /></td>*
> * <td><input t:type="passwordfield" t:id="accountPasswordConfirmation"
> value="accountPasswordConfirmation" t:validate="required" /></td>*
> * <td><t:error for="accountPasswordConfirmation" /></td>*
> * </tr>*
> *
> *
> * <tr>*
> * <td><label class="right-align" t:type="label" for="accountPostcode"
> /></td>*
> * <td><input t:type="textfield" t:id="accountPostcode" size="5"
> value="childminderAccount.accountPostcode" t:validate="required" /></td>*
> * <td><t:error for="accountPostcode" /></td>*
> * </tr>*
> *
> *
> * <tr>*
> * <td><label class="right-align" t:type="label" for="childminderStatus"
> /></td>*
> * <td><input t:type="select" model="childminderStatusSelectModel"
> t:id="childminderStatus" value="childminderAccount.childminderstatusID"
> blankLabel="votre status" blankOption="always"*
> * t:validate="required" /></td>*
> * <td><t:error for="childminderStatus" /></td>*
> * </tr>*
> * <tr>*
> * <td><label class="right-align" t:type="label" for="kaptcha" /></td>*
> * <td><t:kaptchafield t:image="kaptchaImage" t:id="kaptcha"
> t:validate="required" /></td>*
> * <td><t:kaptchaimage t:id="kaptchaImage" /> <t:error for="kaptcha" /></td>*
> * </tr>*
> * <tr>*
> * <td></td>*
> * <td colspan="2"><input t:type="submit" type="submit"
> value="message:childminder-registration-submit" /></td>*
> * </tr>*
> *
> *
> * </table>*
> * </form>*
> *
> *
> * <t:pagelink page="advertisement/NewAdvertisement">creer nouvelle
> annonce</t:pagelink>*
> *</t:childminderlayout>*
>
> Regards,
> Julien.
>
> Le 14 février 2012 13:09, Jonathan Barker <jonathan.theit...@gmail.com> a
> écrit :
>
>> The error doesn't look like it has anything to do with testing.
>>
>> Java and tml files please.
>>
>> On Mon, Feb 13, 2012 at 4:17 PM, Julien Martin <bal...@gmail.com> wrote:
>> > up please
>> >
>> > Le 13 février 2012 13:07, Julien Martin <bal...@gmail.com> a écrit :
>> >
>> >> Hello,
>> >>
>> >> I am trying to implement some tapestry tests for my pages. Here is the
>> >> test method:
>> >>
>> >> *@Test*
>> >>
>> >> * public void test() {*
>> >> * String appPackage = "com.bignibou.web";*
>> >> * String appName = "app";*
>> >> * BignibouPageTester tester = new BignibouPageTester(appPackage,
>> appName,
>> >> "src/main/webapp");*
>> >> * Document doc = tester.renderPage("account/childminderregistration");*
>> >> * Element childminderRegistrationForm =
>> >> doc.getElementById("childminderRegistrationForm");*
>> >> * Map<String, String> fieldValues = new HashMap<String, String>();*
>> >> * fieldValues.put("accountEmailAddress", "bal...@yahoo.fr");*
>> >> * fieldValues.put("accountFirstName", "Julien");*
>> >> * fieldValues.put("accountLastName", "Martin");*
>> >> * fieldValues.put("accountPassword", "mmmmmm");*
>> >> * fieldValues.put("accountPasswordConfirmation", "mmmmmm");*
>> >> * fieldValues.put("accountPostcode", "75003");*
>> >> * fieldValues.put("childminderStatus", "nourrice");*
>> >> * assertNotNull(tester);*
>> >> * assertNotNull(doc);*
>> >> * assertNotNull(childminderRegistrationForm);*
>> >> * Document docFromForm = tester.submitForm(childminderRegistrationForm,
>> >> fieldValues);*
>> >> * assertTrue(docFromForm.toString().contains("bal...@yahoo.fr"));*
>> >> * }*
>> >>
>> >> Here is the stack trace of the exception I get:
>> >>
>> >> 5363 [main] ERROR org.apache.tapestry5.ioc.Registry - Unable to inject
>> >> component into field accountEmailAddressField of class
>> >> com.bignibou.web.pages.account.ChildminderRegistration: Component
>> >> account/ChildminderRegistration does not contain embedded component
>> >> 'accountEmailAddress'.
>> >> 5363 [main] ERROR org.apache.tapestry5.ioc.Registry - Operations trace:
>> >> 5363 [main] ERROR org.apache.tapestry5.ioc.Registry - [ 1] Constructing
>> >> instance of page class
>> >> com.bignibou.web.pages.account.ChildminderRegistration
>> >> 5370 [main] ERROR
>> >> org.apache.tapestry5.services.TapestryModule.RequestExceptionHandler -
>> >> Processing of request failed with uncaught exception: Unable to inject
>> >> component into field accountEmailAddressField of class
>> >> com.bignibou.web.pages.account.ChildminderRegistration: Component
>> >> account/ChildminderRegistration does not contain embedded component
>> >> 'accountEmailAddress'.
>> >> org.apache.tapestry5.ioc.internal.OperationException: Unable to inject
>> >> component into field accountEmailAddressField of class
>> >> com.bignibou.web.pages.account.ChildminderRegistration: Component
>> >> account/ChildminderRegistration does not contain embedded component
>> >> 'accountEmailAddress'.
>> >>  at
>> >>
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121)
>> >>  at
>> >>
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88)
>> >>  at
>> >>
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
>> >>  at
>> >>
>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:177)
>> >>  at $PageLoader_c5334e9b702b.loadPage(Unknown Source)
>> >> at
>> >>
>> org.apache.tapestry5.internal.services.PageSourceImpl.getPage(PageSourceImpl.java:104)
>> >>  at $PageSource_c5334e9b7028.getPage(Unknown Source)
>> >> at
>> >>
>> org.apache.tapestry5.internal.services.NonPoolingRequestPageCacheImpl.get(NonPoolingRequestPageCacheImpl.java:82)
>> >>  at $RequestPageCache_c5334e9b7027.get(Unknown Source)
>> >> at $RequestPageCache_c5334e9b7022.get(Unknown Source)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:55)
>> >>  at
>> >>
>> org.apache.tapestry5.services.TapestryModule$37.handle(TapestryModule.java:2207)
>> >>  at $PageRenderRequestHandler_c5334e9b7026.handle(Unknown Source)
>> >>  at $PageRenderRequestHandler_c5334e9b7020.handle(Unknown Source)
>> >> at
>> >>
>> org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
>> >>  at
>> >>
>> org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47)
>> >>  at $ComponentRequestHandler_c5334e9b7021.handlePageRender(Unknown
>> Source)
>> >>  at $ComponentRequestHandler_c5334e9b6fe8.handlePageRender(Unknown
>> Source)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
>> >>  at $Dispatcher_c5334e9b6feb.dispatch(Unknown Source)
>> >> at $Dispatcher_c5334e9b6fe2.dispatch(Unknown Source)
>> >>  at
>> >>
>> org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:302)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
>> >>  at $RequestHandler_c5334e9b6fe4.service(Unknown Source)
>> >> at
>> >>
>> org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902)
>> >>  at $RequestHandler_c5334e9b6fe4.service(Unknown Source)
>> >> at
>> >>
>> org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892)
>> >>  at $RequestHandler_c5334e9b6fe4.service(Unknown Source)
>> >> at
>> >>
>> org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
>> >>  at $RequestHandler_c5334e9b6fe4.service(Unknown Source)
>> >> at
>> >>
>> org.apache.tapestry5.internal.test.EndOfRequestCleanupFilter.service(EndOfRequestCleanupFilter.java:42)
>> >>  at $RequestHandler_c5334e9b6fe4.service(Unknown Source)
>> >> at
>> >>
>> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95)
>> >>  at
>> >>
>> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119)
>> >>  at $RequestHandler_c5334e9b6fe4.service(Unknown Source)
>> >> at $RequestHandler_c5334e9b6fd3.service(Unknown Source)
>> >>  at
>> >>
>> org.apache.tapestry5.test.PageTester.renderPageAndReturnResponse(PageTester.java:205)
>> >>  at org.apache.tapestry5.test.PageTester.renderPage(PageTester.java:176)
>> >>  at
>> >>
>> com.bignibou.web.pages.ChildminderRegistrationTest.test(ChildminderRegistrationTest.java:22)
>> >>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> >>  at
>> >>
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> >>  at
>> >>
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> >>  at java.lang.reflect.Method.invoke(Method.java:616)
>> >> at
>> >>
>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>> >>  at
>> >>
>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>> >>  at
>> >>
>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>> >>  at
>> >>
>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>> >>  at
>> >>
>> org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
>> >>  at
>> >>
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
>> >>  at
>> >>
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
>> >>  at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
>> >>  at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
>> >>  at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
>> >>  at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
>> >>  at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
>> >>  at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
>> >> at
>> >>
>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>> >>  at
>> >>
>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>> >>  at
>> >>
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>> >>  at
>> >>
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>> >>  at
>> >>
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>> >>  at
>> >>
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>> >> Caused by: java.lang.RuntimeException: Unable to inject component into
>> >> field accountEmailAddressField of class
>> >> com.bignibou.web.pages.account.ChildminderRegistration: Component
>> >> account/ChildminderRegistration does not contain embedded component
>> >> 'accountEmailAddress'.
>> >>  at
>> >>
>> org.apache.tapestry5.internal.transform.InjectComponentWorker$InjectedComponentFieldValueConduit.load(InjectComponentWorker.java:71)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.transform.InjectComponentWorker$InjectedComponentFieldValueConduit.access$000(InjectComponentWorker.java:36)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.transform.InjectComponentWorker$InjectedComponentFieldValueConduit$1.containingPageDidLoad(InjectComponentWorker.java:57)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.structure.PageImpl.loaded(PageImpl.java:186)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:193)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:178)
>> >>  at
>> >>
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>> >>  ... 63 more
>> >> Caused by: org.apache.tapestry5.ioc.util.UnknownValueException:
>> Component
>> >> account/ChildminderRegistration does not contain embedded component
>> >> 'accountEmailAddress'.
>> >>  at
>> >>
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.getEmbeddedElement(ComponentPageElementImpl.java:860)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.getEmbeddedComponent(InternalComponentResourcesImpl.java:186)
>> >>  at
>> >>
>> org.apache.tapestry5.internal.transform.InjectComponentWorker$InjectedComponentFieldValueConduit.load(InjectComponentWorker.java:68)
>> >>  ... 69 more
>> >>
>> >>
>> >> The field does exist in the form and it it the first one occurring in
>> the
>> >> form.
>> >>
>> >> Can anyone please help?
>> >>
>> >> Regards,
>> >>
>> >> Julien Martin.
>> >>
>>
>>
>>
>> --
>> Jonathan Barker
>> ITStrategic
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>
>>



-- 
Jonathan Barker
ITStrategic

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to