Hi,

Looks like this is a Seam, rather than ECM question. Basically, the 
error message is saying that nothing is bound to any Seam context under 
the name "myFileManager". You need to create one by some means, or have 
Seam create it for you automatically. The Seam documentation should 
help. Maybe all you need is to use the @AutoCreate annotation, but this 
all depends on your own case.

Regards,

Sean

Chris Pioli wrote:
> I’m running into trouble with my new document type. I am trying to create a 
> search UI, and it’s not working properly.
>
> I created a new tab in my new document type, which contains a search prompt. 
> All my documents have some space set aside for keywords, and the search UI 
> I’m 
> designing is going to search all documents and return the documents that have 
> the matching keyword. I go to the tab, type in the keyword I want to search 
> for, and then I click the “search” button, and then this error appears in the 
> browser:
>
> /incl/tabs/my_view.xhtml @22,80 value="#{myFileManager.keyword}": Target 
> Unreachable, identifier 'myFileManager' resolved to null
>
> I have a feeling it relates to the connection between the .xhtml file and my 
> Bean. Has anyone seen this error before, and how do I solve it?
>
> This was the code for my .xhtml document:
>
> <div xmlns="http://www.w3.org/1999/xhtml";
>        xmlns:f="http://java.sun.com/jsf/core";
>        xmlns:h="http://java.sun.com/jsf/html";>
>  
> <h2>Searching for documents by keywords</h2>
>
> <h:messages styleClass="errorMessage" />
>
> <h:form>
>   <h:panelGrid columns="3" styleClass="dataInput"
>     columnClasses="labelColumn, fieldColumn, fieldColumn">
>     <h:outputLabel value="Enter a keyword to search for" />
>     <h:inputText id="theKeyword" value="#{myFileManager.keyword}" 
> required="true" />
>     <h:commandButton type="submit" value="Search" action="#
> {myFileManager.performSearch}" class="button"/>
>     <h:message for="theKeyword" styleClass="errorMessage" />
>   </h:panelGrid>
> </h:form>
>
> The code for my Bean is below. Please note the fact that I liberally took 
> parts of the SearchActionsBean and put them into my class, and I also added 
> in 
> the search method from the BookManagerBean incase I could use that (I haven't 
> done so yet, though).
>
> @Scope(ScopeType.CONVERSATION)
> @Name("myFileManager")
> public class MyFileManagerBean {
>       private static final Log log = LogFactory.getLog
> (MyFileManagerBean.class);
>       
>       private static final String ACTION_PAGE_SEARCH_NXQL 
> = "search_results_nxql";
>       
>       private static final String PROV_NXQL = "SEARCH_BEAN_NXQL_PROVIDER";
>       
>       private static final String ACTION_PAGE_SEARCH_QUERY_ERROR = null;
>       
>       private static final String ACTION_PAGE_SEARCH_NO_KEYWORDS = null;
>       
>       private String queryErrorMsg;
>       
>       @In(required = false, create = true)
>       private transient ResultsProvidersCache resultsProvidersCache;
>       
>       @In(create = true)
>       private transient Context conversationContext;
>       
>       @PrePassivate
>       public void prePassivate() {
>               log.debug("prePassivate");
>       }
>       
>       @PostActivate
>       public void postActivate() {
>               log.debug("postActivate");
>       }
>       
>       @Remove
>       @Destroy
>       public void destroy() {
>               log.debug("destroy");
>       }
>       
>       @In(create = true)
>       protected transient NavigationContext navigationContext;
>       
>       @In(create = true)
>       protected transient WebActions webActions;
>       
>       @In(create = true)
>       protected transient CoreSession documentManager;
>       
>       @In(create = true)
>       protected transient FacesMessages facesMessages;
>       
>       @In(create = true)
>       protected transient ResourcesAccessor resourcesAccessor;
>       
>       private String keyword;
>       
>       public String getKeyword() {
>               if (keyword == null) {
>                       keyword="";
>               }
>               return keyword;
>       }
>       
>       public void setKeyword(String t) {
>               keyword = t;
>       }
>       
>       public ResultSet getSearchResults() throws Exception {
>           SearchService searchService = Framework.getService
> (SearchService.class);
>           ComposedNXQuery query = new ComposedNXQueryImpl("SELECT * FROM 
> Document WHERE"
>       + " ecm:primaryType = 'MyFile'"
>                                                                       
>       + " AND ht:myKeywords = '" 
>                                                                       
>       + keyword + "'");
>           ResultSet resultSet = searchService.searchQuery(query, 0, 10);
>           return resultSet;
>       }
>       
>       public String performSearch() throws ClientException,
>                       ECInvalidParameterException {
>                       
>               if (log.isDebugEnabled()) {
>                       log.debug("performing searchType: NXQL");
>               }
>               try {
>                       String page;
>                       PagedDocumentsProvider resultsProvider = null;
>                       if (tag == null) {
>                               log.warn("Tagging search: no tag query has 
> been provided");
>                               return ACTION_PAGE_SEARCH_NO_KEYWORDS;
>                       }
>                       log.debug("Query: " + "SELECT * FROM Document WHERE"
>                                                               + " 
> ecm:primaryType = 'MyFile'"
>                                                               + " AND 
> ht:myKeywords = '" + keyword + "'");
>                       resultsProvidersCache.invalidate(PROV_NXQL);
>                       resultsProvider = resultsProvidersCache.get(PROV_NXQL);
>                       page = ACTION_PAGE_SEARCH_NXQL;
>                       
>                       if (resultsProvider instanceof SearchPageProvider) {
>                               String lastQuery = ((SearchPageProvider) 
> resultsProvider).getQuery();
>                               conversationContext.set("search.lastQuery", 
> lastQuery);
>                       } else {
>                               conversationContext.set("search.lastQuery", 
> null);
>                       }
>                       
>                       return page;
>               } catch (SortNotSupportedException e) {
>                       queryErrorMsg = e.getMessage();
>                       log.debug("Search error " + e.getMessage(), e);
>                       return ACTION_PAGE_SEARCH_QUERY_ERROR;
>               } catch (ClientException e) {
>                       // Present to user: we should make the difference 
> between
>                       // QueryException and actual errors (hey, I'm just 
> copying what
>                       // they said)
>                       queryErrorMsg = e.getMessage();
>                       log.debug("Search error: " + e.getMessage(), e);
>                       return ACTION_PAGE_SEARCH_QUERY_ERROR;
>               }
>       }
> }
>
>
>
>
> _______________________________________________
> ECM mailing list
> [email protected]
> http://lists.nuxeo.com/mailman/listinfo/ecm
>   


-- 
Dr. Sean Radford, MBBS, MSc
http://www.tacola.com/

_______________________________________________
ECM mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm

Reply via email to