Klaus SCHUSTER schrieb:
> 
> Simon Kitching <[email protected]> schrieb am 01.04.2009 11:30:36:
> 
>> Klaus SCHUSTER schrieb:
>> >
>> > Hi,
>> >
>> > I am using a t:inputCalendar tag from Tomahawk 1.1.8:
>> > [code]
>> > <t:inputCalendar id="mycal"
>> >  addResources="false"  
>> >  monthYearRowClass="yearMonthHeader"
>> >  weekRowClass="weekHeader"  
>> >  popupButtonStyleClass="standard_bold"
>> >  currentDayCellClass="currentDayCell"
>> >  value="#{BB.geburtsdatum}"
>> >  renderAsPopup="true"
>> >  popupTodayString="Heute ist der: "  
>> >  helpText="MM/DD/YYYY">
>> > </t:inputCalendar>
>> > <h:outputText value="#{BB.geburtsdatum}" />
>> > [/code]
>> >
>> > geburtsdatum is a DATE in my BB with its getter and setter.
>> > The t:inputCalendar is embedded in an form.
>> > When I open the JSF Page with Internet Explorer 6 I get the following
>> > JavaScript error:
>> > [code]
>> > org_apache_myfaces_PopupCalendar() is undefined
>> > [/code]
>>
>> Does this happen with browsers more modern than IE6? That is pretty old...
>>
> I am currently using Internet Explorer 7. It is not possible to use
> Firefox for my web project.
> 
>> The other likely issue is to do with the ExtensionsFilter. Somewhere in
>> the generated HTML page there should be something that looks roughly like
>>
>> <script
>> src="/mywebapp/faces/myfacesExtensionResource/123456/inputCalendar.js">
>> </script>
>>
>> This is what loads the javascript that the calendar component needs. But
>> these urls require you to set up the tomahawk ExtensionsFilter, as
>> described by this page:
>>   http://myfaces.apache.org/tomahawk/extensionsFilter.html
>>
>> If you use firefox, then the "live http headers" extension will tell you
>> whether the url loads correctly or not.
>>
>> Regards, Simon
>>
>> --
>> -- Emails in "mixed" posting style will be ignored
>> -- (http://en.wikipedia.org/wiki/Posting_style)
> 
> I am already using the extension filter as mentioned at the given link.
> Here is my web.xml containing all necessary inputs:
> 
>    <filter-mapping>
>         <filter-name>MyFacesExtensionsFilter</filter-name>
>         <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
>     </filter-mapping>
>     <filter-mapping>
>         <filter-name>MyFacesExtensionsFilter</filter-name>
>         <url-pattern>*.faces</url-pattern>
>     </filter-mapping>
>     <filter-mapping>
>         <filter-name>MyFacesExtensionsFilter</filter-name>
>         <servlet-name>Faces Servlet</servlet-name>
>     </filter-mapping>
>     <servlet>
> 
> I am using *.faces urls therefore is the url-pattern set to this file
> extension.
> I only see the following java Script tags in my renederd JSF File:
> <script type="text/javascript"
> src="/mywebapp/faces/myFacesExtensionResource/org.apache.myfaces.renderkit.html.util.MyFacesResourceLoader/12385798/inputTextHelp.HtmlTextHelpRenderer/inputTextHelp.js">
> 
> 
> Is it possible to set this required java script js file manually?
> I am using Websphere Application Server 6.1

As a quick workaround for whatever the problem is, you could certainly
unpack the tomahawk jarfile, find the right javascript files, and add
them directly to your project. Then you would need to manually add the
right <script src=...> tags into any page that uses t:inputCalendar. See
the end of the email for the list of javascript files needed by the
inputCalendar in "popup" mode.

However t:inputCalendar definitely works; the app I work on every day
uses it. There is a small probability that this is something due to the
servlet engine (I use tomcat, not websphere) or the JSF impl (I use
mojarra, not myfaces). But I'm pretty sure we would have had many more
problem reports if this was a common issue.

Are you using Trinidad? I remember seeing some emails in this list about
problems with ExtensionsFilter and trinidad (the filters need to be
declared in web.xml in just the right order for them to work).

You say, however, that the html page doesn't have any <script> tag at
all that is referencing an inputCalendar script. That is odd. You
mentioned before that you have been experimenting with changing the
myfaces resources-handling code. Are you sure you didn't leave any of
your changes in by accident?

Class org.apache.myfaces.custom.calendar.HtmlCalendarRenderer has this:
  if(inputCalendar.isAddResources())
      addScriptAndCSSResources(facesContext, inputCalendar);

The inputCalendar.isAddResources method looks ok. You will find just an
abstract method with annotation on AbstractHtmlInputCalendar; the actual
component class HtmlInputCalendar is auto-generated. The generated code
(found in target/myfaces-builder-plugin dir after doing build) has:
    public boolean isAddResources()
    {
        if (_addResourcesSet)
        {
            return _addResources;
        }
        ValueBinding vb = getValueBinding("addResources");
        if (vb != null)
        {
            return ((Boolean)
vb.getValue(getFacesContext())).booleanValue();
        }
        return true;
    }
In other words, it *does* return true by default, so this looks ok.

The addScriptAndCSSResources method does:
   if(javascriptLocation==null)
    {
       addresource.addJavaScriptAtPosition(facesContext,
AddResource.HEADER_BEGIN, PrototypeResourceLoader.class, "prototype.js");
       addresource.addJavaScriptAtPosition(facesContext,
AddResource.HEADER_BEGIN, HtmlCalendarRenderer.class, "date.js");
       addresource.addJavaScriptAtPosition(facesContext,
AddResource.HEADER_BEGIN, HtmlCalendarRenderer.class, "popcalendar.js");
    }
so you really should be seeing <script> tags for the three files
"prototype.js", "date.js", "popcalendar.js" in your generated html file.


I can't for the moment think why you would not be seeing these. Is there
something unusual about your setup that you haven't mentioned yet? Eg
are you using ajax or frames or SiteMesh or something?

Regards,
Simon



-- 
-- Emails in "mixed" posting style will be ignored
-- (http://en.wikipedia.org/wiki/Posting_style)

Reply via email to