In an ideal world, validation occurs in PROCESS_VALIDATIONS phase of JSF lifecycle, so there shouldn't be any problems pushing the validated value to the model.

Our Trinidad renderkit implements the lifecycle in such a way that after PROCESS_VALIDATIONS phase, the submitted value is cleared, and after UPDATE_MODEL phase, the local value is cleared.

But in reality, depending on the implementation of the model, validation exception can occur in different phases other than PROCESS_VALIDATIONS phase. Thus Trinidad renderkit was enhanced to catch exception in UPDATE_MODEL phase and not clear the local value in case an exception is caught.

But what to do with this exception? Still, the model implementation could choose to have its own error handling logic to report this exception, and this exception could be a chain of errors that model wants to report all of them. In such case, we would like to have the ability to notify Trinidad renderkit that an exception occurs, don't clear the local value, but don't report it either since model will report it.

Thanks,
Jing

Scott O'Bryan wrote:
Hogbing,

I'm taking a look at the bug now but just so I understand..  When you
refer to JSF, I assume you mean the Trinidad renderkit.  Is that
correct?

Scott

On Feb 16, 2011, at 4:23 PM, Hongbing <hongbing.w...@oracle.com> wrote:

Hi Pavitra:
It can happen in update model phase. For example, Model layer throws exception 
when attribute value validation fails, binding layer detects it and re-throwd 
new exception with the new interface to JSF. JSF then can handle it accordingly.

thanks,
Hongbing

On 2/16/2011 2:09 PM, Pavitra Subramaniam wrote:
Hello Hongbing,

You mentioned that exceptions get thrown by model layer outside of JSF. Can you 
give an e.g., of when this might occur?
How exactly will the interface get used?

Thanks
Pavitra



On 2/16/2011 1:01 PM, Hongbing wrote:
Hi:
This is for JIRA TRINIDAD-2038, please let me know your suggestion.

There are cases that exception is thrown in update model phase, like model 
layer validation failure, by model outside of JSF and the exception is also 
handled and reported outside of JSF. To avoid the component's local value 
getting reset to null, JSF needs to be notified when it happens. The proposed 
solution is to re-throw a special exception to JSF to notify it and also let 
JSF know whether it needs to report the exception.

Here is the interface of the exception:
package org.apache.myfaces.trinidad.context;

/**
* Interface for exceptions that tells whether the exception needs to be 
reported.
* If an exception is thrown during JSF lifycycle and aleady reported, then it 
should let
* JSF know not to report it again.
*
*/
public interface Reportable
{

 /**
  * Return false if JSF doesn't need to report this exception, otherwise true.
  */
 public boolean isReportingMessage();

}

Thanks,
Hongbing



Reply via email to