Index: samigo-app/pom.xml
===================================================================
--- samigo-app/pom.xml (revision 311573)
+++ samigo-app/pom.xml (working copy)
@@ -67,12 +67,35 @@
Decode Behavior
Obtain the Map
from the "requestParameterMap"
- property of the ExternalContext
. If the value in theMap
for the value of the "clientId" property of the
- component is null
, create a String by concatenating
- the value of the "clientId" property of the component with the
- String ".x" (without the quotes). Create another String in the
- same manner, but concatenate ".y" (without the quotes). Ifnull
is the value in the Map
for both
- Strings, return from decode()
. If the value in theMap
for the value of the "clientId" property of the
- component is not null
, get the value of the "type"
- attribute, and convert it to lower case. If the result is equal
- to the String "reset" (without the quotes), return fromdecode()
. Otherwise, create ajavax.faces.event.ActionEvent
around the component,
- and pass it to the queueEvent()
method of the
- component, which must be an instance ofUICommand
.
Encode Behavior
Render the clientId of the component as the value of the - "name" attribute. Render the current value of the component as - the value of the "value" attribute. If the "styleClass" attribute - is specified, render its value as the value of the "class" - attribute.
General Behaviour
Both the encode and decode behavior require the ability to get - the id/name for a hidden field whose value is set by the - JavaScript form submit. This name must be constructed as - follows:
Get the clientId for the form of which this component is a - child.
AppendNamingContainer.SEPARATOR_CHAR
.
Append a constant string that is the same for all command - link components in the tree.
In the following text, this String is called - hiddenFieldName.
Decode Behavior
Obtain the "clientId" property of the component. Obtain theMap
from the "requestParameterMap" property of theExternalContext
. Derive hiddenFieldName as above.
- Get the entry in the Map
under the key that is the
- hiddenFieldName. If the there is no entry, or the entry is the
- empty String, or the entry is not equal to the value of the
- "clientId" property, return immediately. If there is an entry,
- and its value is equal to the value of the "clientId" property,
- create a new javax.faces.event.ActionEvent
instance
- around the component and call queueActionEvent()
on
- the component, passing the event.
Encode Behavior
Render "#" as the value of the "href" attribute. Render the current - value of the component as the link text if it is specified. Render - javascript that is functionally equivalent to the following as the value - of the "onclick" attribute:
document.forms['CLIENT_ID']['hiddenFieldName'].value='CLIENT_ID';
- document.forms['CLIENT_ID']['PARAM1_NAME'].value='PARAM1_VALUE';
- document.forms['CLIENT_ID']['PARAM2_NAME'].value='PARAM2_VALUE';
- return false;
document.forms['CLIENT_ID'].submit()" where hiddenFieldName isas described above, CLIENT_ID is the clientId of the UICommand - component, PARAM*_NAME and PARAM*_VALUE are the names and values, - respectively, of any nested UIParameter children. The name and - the value must be URLEncoded. If the "styleClass" attribute is - specified, render its value as the value of the "class" attribute. - Render any non-UIParameter children as normal inside of the "a" - element. These will appear as the link text. Allow the form - renderer to output a single "input" element (for the entire page, - regardless of how many command link components are in the page) of - "type" "hidden" whose "name" is the value of hiddenFieldName, and - which must not have a "value" attribute. Multiple occurrences of - command link components in the tree should not cause multiple - hiddenFieldName hidden fields. Allow the form renderer to output - an "input" element of "type" "hidden" for each of the nested - UIParameter children, taking the name property (but not the value) - from each one in turn.
UIData
- to supplement this specification. If the "styleClass" attribute
- is specified, render its value as the value of the "class"
- attribute on the "table" element. Any pass-through attributes are
- also rendered on the "table" element. Rendering the header
If the UIData
component has a "header" facet, or
- any of the child UIColumn
components has a "header"
- facet, render a "thead" element. If the UIData
- component has a "header" facet, encode its contents inside of "tr"
- and "th" elements, respectively. Output the value of the
- "headerClass" attribute of the UIData
component, if
- present, as the value of the "class" attribute on the "th".
- Output the number of child UIColumn
components of theUIData
component as the value of the "colspan"
- attribute on the "th". Output "colgroup" as the value of the
- "scope" attribute on the "th" element.
If any of the child UIColumn
components has a
- "header" facet render a "tr" element. For eachUIColumn
that actually has a "header" facet, render
- it inside of a "th" element. Columns that don't have a "header"
- facet cause an empty "th" element to be rendered. Output the
- value of the "headerClass" attribute of the UIData
- component, if present, as the value of the "class" attribute on
- the "th". Output "col" as the value of the "colgroup" attribute
- on the "th" element.
Close out the "thead" element.
Rendering the footer
Follow the same process as for the header, except replace - "header" with "footer", "th" with "td", "thead" with "tfoot", and - "headerClass" with "footerClass". Do not render any "scope" - attribute for the footer.
Rendering the table body
Render a "tbody" element. Keep track of the result of the
- "rows" property on the UIData
component. Keep track
- of the number of rows we have rendered so far. Iterate through
- the rows. Set the "rowIndex" property of the UIData
component to be correct as we iterate through the rows. Stop
- rendering children and close out the "tbody" element if the
- "rowAvailable" property of the UIData
returned false.
- Output a "tr" element. Output the value of the "rowClasses" per
- the attribute description below. For each UIColumn
- child, output a "td" element, attaching the value of the
- "columnClasses" attribute of the UIData
component per
- the attribute description below. Recursively encode each child of
- each UIColumn
child. Close out the "td" element.
- When done with the row, close out the "tr" element. When done
- with all the rows, close out the "tbody" element.
When done rendering all the rows, set the "rowIndex" property of
- the UIData
to -1, and close out the "table"
- element.
Decode Behavior
Obtain the Map
from the "requestParameterMap"
- property of the ExternalContext
. If the map contains
- an entry for the "clientId" of this UIForm
component,
- call setSubmitted(true)
on the form, otherwise callsetSubmitted(false)
on the form.
Encode Behavior
The value of the "method" attribute must be "post". The value
- of the "action" attribute must be the result of passing the view
- identifier of the current view to the getActionURL()
- method of the ViewHandler
for this application,
- then passing that String to the encodeActionURL()
- method on the ExternalContext
. If the "styleClass"
- attribute is specified, render its value as the value of the
- "class" attribute. Render all the necessary hidden fields for all
- commandLink instances in the page just before the close of the
- "form" element.
ViewHandler
- for this application, and passing the result
- through the encodeResourceURL()
method of theExternalContext
. If present, render the value of the
- alt attribute as the value of the "alt" attribute. If the
- "styleClass" attribute is specified, render its value as the value
- of the "class" attribute.]]>
- Decode Behavior
See the decode description for the Input - Text renderer.
Encode Behavior
Render the clientId of the component as the value of the - "name" attribute. Render the current value of the component as - the value of the "value" attribute.
Decode Behavior
See the decode description for the Input - Text renderer.
Encode Behavior
- Render the clientId of the component as the value of the "name" - attribute. Render the current value of the component as the value - of the "value" attribute, if and only if the "redisplay" component - attribute is the string "true". If the "styleClass" attribute is - specified, render its value as the value of the "class" - attribute.
Obtain the Map
from the "requestParameterMap"
- property of the ExternalContext
. If theMap
contains an entry for the "clientId" of the
- component, pass the value of the entry to thesetSubmittedValue()
method of the component, which
- must be an instance of EditableValueHolder
.
Encode Behavior
Render the clientId of the component as - the value of the "name" attribute. Render the current value of - the component as the value of the "value" attribute. If the - "styleClass" attribute is specified, render its value as the value - of the "class" attribute.
Decode Behavior
See the encode description for the Input - Text renderer.
Encode Behavior
Render the - clientId as the value of the "name" attribute. Render the current - valu eof the component inside the "textarea" - element.
Set-up for Rendering
Obtain the "summary" and "detail" properties fromUIMessage
component. If not present, keep the
- empty string as the value, respectively. Obtain the firstFacesMessage
to render from the component, using
- the "for" property of the UIMessage
. This will be
- the only message we render. Obtain the severity style for this
- message. If the severity of the message isFacesMessage.SEVERITY_INFO
, the severity style
- comes from the value of the "infoStyle" attribute. If the
- severity of the message isFacesMessage.SEVERITY_WARN
, the severity style
- comes from the value of the "warnStyle" attribute, and so on for
- each of the severities, INFO, WARN, ERROR
andFATAL
. The same rules apply for obtaining the
- severity style class, but instead of "infoStyle, warnStyle", etc
- use "infoClass, warnClass", etc. Obtain the "style",
- "styleClass" and "layout" attributes from theUIMessage
component. If we have a "style"
- attribute and a severity style attribute, use the severity style
- attribute as the value of the "style" attribute. If we have no
- "style" attribute, but do have a severity style, use the
- severity style as the value of the "style" attribute. The same
- precedence rules apply for the style class.
Rendering
For the message renderer, we only render
- one row, for the first message. For the messages renderer, we
- render as many rows as we have messages. If either of the "style"
- or "styleClass" attributes has a non-null value (as determined
- above), render a "span" element, outputting the value of the
- "style" attribute as the the value of the "style" attribute, and
- outputting the value of the "styleClass" attribute as the value of
- the "class" attribute on the "span" element. If theUIMessage
has a "tooltip" attribute with the value of
- "true", and the UIMessage
has "showSummary" and
- "showDetail" properties with the value "true", if we haven't
- already written out the "span", output the "summary" as the value
- of the "title" attribute on the "span". If we haven't already
- written out a "title" attribute, and "showSummary" is true, output
- the summary. If "showDetail" is true, output the detail. Close
- out the span if necessary.
UIMessages
, and there is no "for" attribute.
- Therefore, use either null
to obtain the messages from
- the FacesContext
or the empty string if the components
- "globalOnly" property is true
. If the layout was
- "table" close out the table elements. ]]>
- style
- and styleClass
attributees from this component. If either
- are present, render a "span" element. Output the styleClass
- attribute (if present) as the value of the class
attribute.
- Output the style
attribute as the value of thestyle
attribute. Accrue a list of the values of all
- child UIParameter
components of this component. If there
- are one or more accumulated parameter values, convert the list of
- parameter values to an Object
array, callMessageFormat.format()
, passing the value
- of this component as the first argument, and the array of parameter
- values as the second argument, and render the result. Otherwise,
- render the value
of this component unmodified.]]>
- ExternalContext
. The name of the UIParameter goes on
- the left hand side, and the value of the UIParameter on the right
- hand side. The name and the value must be URLEncoded. Each
- UIParameter instance is separeted by an ampersand, as dictated in
- the URL spec. If the "styleClass" attribute is specified, render
- its value as the value of the "class" attribute.]]>
- Decode Behavior
Obtain the Map
from the "requestParameterMap"
- property of the ExternalContext
. If there is no
- entry in the Map
for the "clientId" of this
- component, pass "false" to the setSubmittedValue()
- method of the component, which must be an instance ofEditableValueHolder
. If there is an entry, and its
- value is equal, ignoring case and without quotes, to any of the
- Strings: "on", "yes" or "true" pass true to thesetSubmittedValue()
method of the component.
Encode Behavior
- Render the clientId of the component as the value of the "name" - attribute. If the current value of the component is "true", - output the "checked" attribute. If the "styleClass" attribute is - specified, render its value as the value of the "class" - attribute.
See the "Decode - Behavior for UISelectMany Components" section.
Encode Behavior
Render a "table" element. If the "styleClass" is specified, render the
- value of the "styleClass" attribute as the value of the "class" attribute
- on the "table" element. If the "style", "border" attributes are specified,
- pass them thru. If the "layout" attribute is specified, and its
- value is "pageDirection", render the children elements vertically,
- otherwise horizontally, in the table. If any of the children are
- an instance of SelectItemGroup, render them as a nested table.
- Each of the children are ultimately rendererd as follows. Render
- a "label" element. Inside of the "label", render an "input" element
- of "type" "checkbox" for each child component. As an exception to
- the general rules about how to handle the "id" attribute, render it
- as an attribute on the outer "table" element, the value of which is the clientId
of the component per the rules at the beginning
- of this specification.The "id" attribute must not be output on each "input"
- element. The value of the current SelectItem is rendered as the value of
- the "value" attribute. If the value of the enclosing UISelectMany
- matches the current value, render "checked" as the value of the
- "checked" attribute. If the current SelectItem.isDisabled()
- returns true, render "disabled" as the value of the "disabled"
- attribute. Close out the "input" element and render the return
- value from SelectItem.getLabel(). Close out the "label" element
- and any other nested elements. See the "Rendering
- the option elements" specification forListboxRenderer
for more detail on how to render the
- "option" elements in this renderer.
Decode Behavior
This section documents the decode behavior for all renderers
- that handle UISelectMany
or UISelectOne
- components.
Decode Behavior forUISelectMany
components
Obtain the Map
from the
- "requestParameterValuesMap" property of theExternalContext
. If the Map
contains
- an entry for the "clientId" of the component, pass the value of
- the entry, cast to a String []
, to thesetSubmittedValue()
method of the component, which
- must be an EditableValueHolder
. If theMap
does not contain an entry, create an emptyString
array and callsetSubmittedValue()
with it.
Decode Behavior forUISelectOne
components
Obtain the Map
from the "requestParameterMap"
- property of the ExternalContext
. If there is aMap
entry for the "clientId" property of the
- component, pass it to the setSubmittedValue()
method
- of the component.
Encode Behavior
Render an HTML "select" element. Render the clientId of
- the component as the value of the "name" attribute. If the "styleClass"
- attribute is specified, render its value as the value of the "class"
- attribute on the "select" element. If the component is a UISelectMany
instance, render "multiple" as the value of the
- "multiple" attribute. If the "size" attribute is specified, render its
- value as the value of the "size" attribute. Otherwise use the number of
- items as the value of the "size" attribute.
Rendering the "option" elements
The only valid children of this component areUISelectItem
or UISelectItems
instances.
- Iterate over the children of this component, and accrue a list ofjavax.faces.model.SelectItem
instances. If the
- current child is a UISelectItem
create aSelectItem
instance from its itemValue,
- itemLabel
and itemDescription
properties, add
- it to the list. If the current child is aUISelectItems
instance, call itsgetValue()
method. If the result is aSelectItem
bean, add it to the list. If the result
- is an array of SelectItem
beans, add each one t othe
- list. If the result is a Collection
ofSelectItem
beans, add each one to the list. If the
- result isa Map
, create a SelectItem
bean
- for each entry in the Map
using the key as the label,
- the value as the value, and null
as the description.
- Iterate over the list of SelectItem
beans. If the
- current element is a SelectItemGroup
, render an
- "optgroup" element with a "label" attribute, the value of which is
- the "label" property from the current element, then callgetSelectItems()
and render each element as below.
- If the current element is not a SelectItemGroup
,
- render an "option" element. Follow the conversion rules in the
- spec to obtain a renderable String
from the "value"
- property of the current element, render that as the value of the
- "value" atribute. Now it is time to see if the current element is
- the selected value. call itsgetSubmittedValue()
method, casting the result to anObject []
, otherwise the component must be aUISelectOne
instance, call itsgetSubmittedValue()
method and create an Object
- []
around the result. If the resultant array is non-null,
- we look in the array for a value that, when we pass the renderable
- value to its equals()
method, it returnstrue
, meaning the current element is selected. If
- the resultant array is null
, if the component is aUISelectMany
, call its getValue()
- method. If the result is a List
obtain the values in
- the list as an array. Otherwise, the component must be aUISelectOne
instance. Call itsgetValue()
method, which must be an Object array.
- Look for an element in the resultant array that, 1. when we pass
- the renderable value to its equals()
method, it
- returns true
, or 2. if the renderable value is null,
- and there is a null element in the array, also conclude that the
- current element is selected. Otherwise the current element is not
- selected. Now, if the current value is selected, write out an
- HTML boolean property "selected". If the current
- SelectItem.isDisabled() returns true, render "disabled" as the
- value of the "disabled" attribute.
See the "Decode - Behavior for UISelectMany Components" section.
Encode Behavior
Render an HTML "select" element. Render the clientId of
- the component as the value of the "name" attribute. If the "styleClass"
- attribute is specified, render its value as the value of the "class"
- attribute on the "select" element. If the component
- to be rendered is a UISelectMany, render "true" as the value of
- the "multiple" attribute. Render "1" as the value of the "size"
- attribute. See the "Rendering the option
- elements" specification for ListboxRenderer
for
- more detail on how to render the "option" elements in this
- renderer.
See the "Decode - Behavior for UISelectOne Components" section.
Encode Behavior
Render an HTML "select" element. Render the clientId of
- the component as the value of the "name" attribute. If the "styleClass"
- attribute is specified, render its value as the value of the "class"
- attribute on the "select" element. If the component
- to be rendered is a UISelectMany, render "true" as the value of
- the "multiple" attribute. If the "size" attribute is specified,
- render its value as the value of the "size" attribute. Otherwise
- use the number of items as the value of the "size" attribute. See
- the "Rendering the option
- elements" specification for ListboxRenderer
for
- more detail on how to render the "option" elements in this
- renderer.
See the "Decode - Behavior for UISelectOne Components" section.
Encode Behavior
Render an HTML "select" element. Render the clientId of the
- component as the value of the "name" attribute. If the
- "styleClass" attribute is specified, render its value as the value
- of the "class" attribute on the "select" element. If the component
- to be rendered is a UISelectMany, render "true" as the value of
- the "multiple" attribute. Use the number of items as the value of
- the "size" attribute. See the "Rendering
- the option elements" specification forListboxRenderer
for more detail on how to render the "option" elements in this renderer.
See the "Decode - Behavior for UISelectOne Components" section.
Encode Behavior
Render a "table" element. If the "styleClass" is specified, render the
- value of the "styleClass" attribute as the value of the "class" attribute
- on the "table" element. If the "style", "border" attributes are specified,
- pass them thru. If the "layout" attribute is specified, and its
- value is "pageDirection", render the children elements
- vertically, otherwise horizontally, in the table. If any of the
- children are an instance of SelectItemGroup, render them as a
- nested table. Render a "label" element. Each of the children are
- ultimately rendererd as an "input" element of "type" "radio". As an
- exception to the general rules about how to handle the "id" attribute,
- render it as an attribute on the outer "table" element, the value of which
- is the clientId
of the component per the rules at the
- beginning of this specification. The "id" attribute must not be
- output on each "input" element. Output the value of the "label"
- attribute of the SelectItem
after the "input"
- element. If the value of the currently rendered child is equal to
- the value of the parent UISelectOne, render an appropriate HTML
- boolean value indicating "checked" for the enclosing "input". If
- the current SelectItem.isDisabled() returns true, render
- "disabled" as the value of the "disabled" attribute. See the "Rendering the option
- elements" specification for ListboxRenderer
for
- more detail on how to render the "option" elements in this
- renderer. Close out the "label" element.
UIData
component.]]>
-
+
before them, and all the way to the end
@@ -139,7 +139,7 @@
action="#{delivery.submitForGrade}" styleClass="active"
rendered="#{(delivery.actionString=='takeAssessment' || delivery.actionString=='previewAssessment')
&& delivery.navigation ne '1'
- && !delivery.continue}"
+ && !delivery.doContinue}"
disabled="#{delivery.actionString=='previewAssessment'}"
onclick="disableSubmitForGrade()" onkeypress="" />
@@ -153,7 +153,7 @@
action="#{delivery.submitForGrade}" id="submitForm" styleClass="active"
rendered="#{(delivery.actionString=='takeAssessment'
|| delivery.actionString=='previewAssessment')
- && delivery.navigation eq '1' && !delivery.continue}"
+ && delivery.navigation eq '1' && !delivery.doContinue}"
disabled="#{delivery.actionString=='previewAssessment'}"
onclick="pauseTiming='false'; disableSubmit()" onkeypress="pauseTiming='false'"/>
Index: samigo-app/src/webapp/jsf/delivery/deliverAssessment.jsp
===================================================================
--- samigo-app/src/webapp/jsf/delivery/deliverAssessment.jsp (revision 311573)
+++ samigo-app/src/webapp/jsf/delivery/deliverAssessment.jsp (working copy)
@@ -333,10 +333,7 @@
+
+
+
+