Yes you can use the direct javascript api jsf.ajax.request instead of ajax then you can use full identifiers.

        <h:commandButton value="Login"  id="login-button">
>                    <f:ajax execute="user-name password"  render="out"  />
>            </h:commandButton>
 would become

<h:commandButton value="Login" id="login-button" onclick="jsf.ajax.request(this,event,{execute:'@this', render:'form1:out'});return false;">
</h:commandButton>

As you can see the render now is mapped to the full client identifier form1:out

That way you can make  render submits outside of your form.

However, I have to recommend to update to the latest trunk or the soon hopefully to be released myfaces 2.0.1 if you want to do cross form submits or submits with renders outside of your current form.

I did a load of improvement especially in this area for the scripts so that cases like updating a cross form element does not cause problems anymore with other forms where the element might be embedded or which has another form embedded :-)

Here is a code snippet from one of my testing cases dealing exactly with what you want to achieve:

http://www.pastebin.org/358867

Have in mind that all this works in the current trunk (and soon in 2.0.1), but the 2.0.0 codebase and also Mojarra has some limitations. (mostly if you update elements which embed forms, or in case of MyFaces 2.0.0 also if you update elements within another form than the issuing one)



Werner


Am 25.06.10 18:06, schrieb Bytecode:
Is there a way to make the following code work, apart from placing the
"#out" component inside the h:form element?

|<?xml version="1.0"  encoding="ISO-8859-1"  ?>
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN"
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";
        xmlns:h="http://java.sun.com/jsf/html";
        xmlns:f="http://java.sun.com/jsf/core";>
<h:head>
        <title>Welcome</title>
</h:head>

<h:body>

        <h:form id="form1">
        
                <p><h:outputText id="out"  value="#{user.greeting}"  /></p>

                <h:inputText value="#{user.name}"  id="user-name"  />
                <p><h:inputSecret value="#{user.password}"  id="password"  
/></p>
                <p>
                <h:commandButton value="Login"  id="login-button">
                        <f:ajax execute="user-name password"  render="out"  />
                </h:commandButton>
                </p>
        </h:form>
</h:body>

</html>
|



At the moment the following exception is thrown by JSF when rendering
the page:

|<f:ajax>  contains an unknown id'out'  - cannot locate it in the context of 
the component login-button|


Reply via email to