Is ADF-UIX already end of life?

Hi,
I'm still maintaining a project build in ADF-UIX, using jdev 10.1.2.1. Its too much work to migrate to a newer version of ADF using JSF. Now im curious, is ADF-UIX stull being supported by Oracle, or is it end of life already? Anybody know where I can find this info?
kind regards
Ido

Ido, this has been deprecated, you can read the details here including the original desupport notice.
http://www.oracle.com/technetwork/developer-tools/jdev/desupport11g-087493.html
I appreciate that a migration may be a challenge but there are considerable benefits with the 11g stack, features and UI component set that will make this worth the effort.
Regards
Grant

Similar Messages

  • Demo: From ADF UIX to JSF

    Hello,
    I am new to most of this. I am running jdev 10.1.3 preview with EA12.
    While trying to run the demo described in the article "From ADF UIX to JSF"
    found at http://www.oracle.com/technology/oramag/oracle/04-nov/o64jsf.html I got the following errors.
    Project: C:\data\sample_home\MyADFFaces\ADFFacesView\ADFFacesView.jpr
    C:\data\sample_home\MyADFFaces\ADFFacesView\public_html\empTable.jspx
    Error: Internal error, ClassNotFound creating tag parser for afh:head, class: oracle.adfimpl.view.faces.taglib.html.HtmlHeadTag
    Error: Unable to find class for bean: null defined by tag with class: oracle.adfimpl.view.faces.taglib.html.HtmlHeadTag
    Error: head must be terminated with /> or %> not >
    Error: Internal error, ClassNotFound creating tag parser for af:form, class: oracle.adfimpl.view.faces.taglib.core.CoreFormTag
    Error: Unable to find class for bean: null defined by tag with class: oracle.adfimpl.view.faces.taglib.core.CoreFormTag
    Error: Internal error, ClassNotFound creating tag parser for af:table, class: oracle.adfimpl.view.faces.taglib.core.data.CoreTableTag
    Error: Unable to find class for bean: null defined by tag with class: oracle.adfimpl.view.faces.taglib.core.data.CoreTableTag
    Error: Internal error, ClassNotFound creating tag parser for af:tableSelectOne, class: oracle.adfimpl.view.faces.taglib.core.data.CoreTableSelectOneTag
    Error: Unable to find class for bean: null defined by tag with class: oracle.adfimpl.view.faces.taglib.core.data.CoreTableSelectOneTag
    Error: Internal error, ClassNotFound creating tag parser for af:commandButton, class: oracle.adfimpl.view.faces.taglib.core.nav.CoreCommandButtonTag
    Error: Unable to find class for bean: null defined by tag with class: oracle.adfimpl.view.faces.taglib.core.nav.CoreCommandButtonTag
    Here is a copy of the JSP page source that I created as I was following the text in the article
    Source starts
    <?xml version='1.0' encoding='windows-1252'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:afh="http://xmlns.oracle.com/adf/faces/EA6/html"
    xmlns:af="http://xmlns.oracle.com/adf/faces/EA6">
    <jsp:text>
    <![CDATA[ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ]]>
    </jsp:text>
    <jsp:directive.page contentType="text/html;charset=windows-1252"/>
    <f:view>
    <html>
    <afh:head>
    <meta http-equiv="Content-Type"
    content="text/html; charset=windows-1252"/>
    <title>
    empTable
    </title>
    </afh:head>
    <body>
    <af:form>
    <af:table value="#{myEmployees.employees}" var="row" rows="10">
    <f:facet name="selection">
    <af:tableSelectOne text="Select Employee and click ...">
    <af:commandButton text="Show" action="showDetails"/>
    </af:tableSelectOne>
    </f:facet>
    <af:column>
    <af:outputText value="#{row.first_name}"/>
    <f:facet name="header">
    <af:outputText value="Firstname"/>
    </f:facet>
    </af:column>
    <af:column>
    <af:outputText value="#{row.last_name}"/>
    <f:facet name="header">
    <af:outputText value="Lastname"/>
    </f:facet>
    </af:column>
    <af:column>
    <af:outputText value="#{row.email}"/>
    <f:facet name="header">
    <af:outputText value="Email"/>
    </f:facet>
    </af:column>
    </af:table>
    </af:form>
    </body>
    </html>
    </f:view>
    </jsp:root>
    ---source ends ---
    Can anyone tell me how to get past this? Thank you.
    -- Jack Condon

    One immediate thing: "EA6" is in the tag library namespaces, but you're using EA12.
    In general, there've been a lot of changes between EA6 and EA12, but the changed namespace is one simple thing.

  • ADF UIX doSelect override with PL/SQL fails to allow insert

    I've been trying to create an ADF-UIX web app for simple insert/update/delete of records to a table.
    The schema simply has 2 tables - master and detail where the detail pk is made up of the master id and a start date:
    CREATE TABLE master (
    id NUMBER NOT NULL,
    name VARCHAR2 (10) NOT NULL,
    CONSTRAINT pk_master
    PRIMARY KEY ( id ));
    CREATE TABLE detail (
    id NUMBER NOT NULL,
    start_date DATE NOT NULL,
    name VARCHAR2 (10) NOT NULL,
    description VARCHAR2 (100),
    CONSTRAINT pk_detail
    PRIMARY KEY ( id, start_date ));
    ALTER TABLE detail ADD CONSTRAINT d_m_fk FOREIGN KEY (id) REFERENCES master(id)
    This works fine when I create it in a similar manner to that described in the "Complete ADF UIX Application ..." tutorial doc.
    http://www.oracle.com/technology/products/jdev/collateral/tutorials/9050/adfuix_tut.html
    I then tried to override the ADF doSelect and doDML methods as outlined in ADF_BC_StoredProcedures.zip example app allowing me to use PL/SQL stored pkg for dml.
    http://www.oracle.com/technology/sample_code/products/jdev/10g/ADF_BC_StoredProcedures.zip
    On trying to insert a new row my web app now fails with a null pointer exception when I press the Submit button. The app calls doSelect->handleStoredProcSelect which fails to get the value of a column.
    void handleStoredProcSelect() {
    CallableStatement st = null;
    try {
    String stmt = "BEGIN test_api.do_select(?,?,?,?,?); END;";
    DBTransaction tr = getDBTransaction();
    st = tr.createCallableStatement(stmt,1);
    ## This line works, I'm guessing because the value is populated from the master record I've selected in the form ...
    st.setLong(1,getTestId().longValue());
    ##FAILS HERE st.setDate(2,getStartDate().dateValue());
    Update,delete still work ok. And if I run the test app (right click on AppModule and select Test) all works ok.
    I'm not sure why doSelect is called on an insert so I commented out:
    doSelect
    handleStoredProcSelect
    handleStoredProcLock
    compareOldAttrTo
    Web App now lets me insert as expected.
    So finally ....my question is:
    Whilst the app now works does commenting out the doSelect leave me open to problems I haven't thought off
    and if not if you did want to use it how can you allow inserts?
    Any thoughts or similar experiences appreciated ...
    Cheers
    Ian

    I've been trying to create an ADF-UIX web app for simple insert/update/delete of records to a table.
    The schema simply has 2 tables - master and detail where the detail pk is made up of the master id and a start date:
    CREATE TABLE master (
    id NUMBER NOT NULL,
    name VARCHAR2 (10) NOT NULL,
    CONSTRAINT pk_master
    PRIMARY KEY ( id ));
    CREATE TABLE detail (
    id NUMBER NOT NULL,
    start_date DATE NOT NULL,
    name VARCHAR2 (10) NOT NULL,
    description VARCHAR2 (100),
    CONSTRAINT pk_detail
    PRIMARY KEY ( id, start_date ));
    ALTER TABLE detail ADD CONSTRAINT d_m_fk FOREIGN KEY (id) REFERENCES master(id)
    This works fine when I create it in a similar manner to that described in the "Complete ADF UIX Application ..." tutorial doc.
    http://www.oracle.com/technology/products/jdev/collateral/tutorials/9050/adfuix_tut.html
    I then tried to override the ADF doSelect and doDML methods as outlined in ADF_BC_StoredProcedures.zip example app allowing me to use PL/SQL stored pkg for dml.
    http://www.oracle.com/technology/sample_code/products/jdev/10g/ADF_BC_StoredProcedures.zip
    On trying to insert a new row my web app now fails with a null pointer exception when I press the Submit button. The app calls doSelect->handleStoredProcSelect which fails to get the value of a column.
    void handleStoredProcSelect() {
    CallableStatement st = null;
    try {
    String stmt = "BEGIN test_api.do_select(?,?,?,?,?); END;";
    DBTransaction tr = getDBTransaction();
    st = tr.createCallableStatement(stmt,1);
    ## This line works, I'm guessing because the value is populated from the master record I've selected in the form ...
    st.setLong(1,getTestId().longValue());
    ##FAILS HERE st.setDate(2,getStartDate().dateValue());
    Update,delete still work ok. And if I run the test app (right click on AppModule and select Test) all works ok.
    I'm not sure why doSelect is called on an insert so I commented out:
    doSelect
    handleStoredProcSelect
    handleStoredProcLock
    compareOldAttrTo
    Web App now lets me insert as expected.
    So finally ....my question is:
    Whilst the app now works does commenting out the doSelect leave me open to problems I haven't thought off
    and if not if you did want to use it how can you allow inserts?
    Any thoughts or similar experiences appreciated ...
    Cheers
    Ian

  • Populate Primary Key with DBSequence in ADF UIX page

    I have a table with a trigger, so that the primary key is populated by DBSequence. My problem is, I open a ADF UIX Input Page to create a row for my table. The field of the primary key is populated by any number but not with the logical sequence number. This number appears later, when I look at a row list. So the correct number is in the database but how can this already appear on my input page???

    You have to drop the trigger.
    Then make sure you have the Id field of your entity of type Sequence.
    Then go to your entity class and override the Create method.
      protected void create(AttributeList attributeList)
        super.create(attributeList);
        SequenceImpl s = new SequenceImpl("YOUR_DB_SEQUENCE_NAME", getDBTransaction());
        Number sVal = s.getSequenceNumber(); 
        setId(new DBSequence(sVal));

  • I support a very large school district currently running Firefox 3.6. What will happen at end of life date? We're in the middle of online testing this week.

    I run the test center for a very large school district with over 120k students. We've got a current deployed base of 54k client machines using Firefox 3.6. We haven't upgraded due to multiple reasons, the most important of which is removing the possibility of using In Private Browsing from the students, and dealing with plugin-updates for the non digital natives (read dumber than a bag of hammers users) that make up the majority of the client base.
    We're testing ESR now, but just found out that end of life for 3.6 is tomorrow, 4/24. We are currently in the middle of statewide online testing. The question is, what will happen tomorrow when the browser goes end of life. The ESR wiki mentions that "an update to the current version of Desktop Firefox will be offered through the Application Update Service"
    So the main question is, are my students/teachers going to get a popup telling them they have to update the browser if we have the updates already turned off? If so, can I turn it off remotely using SCCM, because it will cause all kinds of havoc.
    Please advise asap, and thanks in advance.

    We had to do some serious gymnastics to remove at least most of the ability to use IPB. We removed it from the gui, but unfortunately, if they know the hotkey, they can still bring it up. Security has some serious headaches with this, as by law they have to be able to track where students go, and going with private browsing removes their ability to do forensic work they're required to be able to do. Not a very well thought out feature from Mozilla in my opinion, but it is what it is. Successive versions have made it even more difficult to remove even the gui portion.
    We do plan to release ESR due to the aforementioned security issues, but testing has been slow.
    But thanks for the reply. I think we can turn off the updates if it isn't already done.

  • Oracle ADF UIX and Struts

    Does Oracle ADF UIX use Struts components internally? If yes, Does Oracle Support the issues that arises because this internally used Struts components? (I am using Oracle ADF in my application.
    Thanks,
    Aravind.

    DataForwardAction and DataAction are build on top of struts actions to coordinate ADF databindings and it's life cycle;
    UIX, has xmlns:struts="http://xmlns.oracle.com/uix/struts" this XML namespace has some elements like
    <struts:form> and <struts:messageTextInput> also <struts:dataScope>
    They work like struts jsp tag;
    here a good paper;
    http://download-west.oracle.com/otn_hosted_doc/jdeveloper/904preview/uixhelp/uixdevguide/struts.html
    Marcos Ortega
    Brazil

  • ADF UIX programatic data binding

    Oracle ADF UIX Developer's Guide mentions the possibility to use the UIX framework in Java, to create new objects or alter the existing ones.
    E.g. we can create a table using a construct like:
    TableLayoutBean tlb = new TableLayoutBean();
    The same document demonstrates the data binding:
    BoundValue rows = new DataBoundValue(_YOUR_NAMESPACE, YOURNAME, "rows");
    tlb.setIndexedNodeList(new DataObjectListNodeList(rows));
    For "simple" attributes using DataObject DataObjectList, etc. the procedure is clear. But what about creating a data bound table or input text:
    <table model="${bindings.EmpView1}" ... >
    <messageTextInput model="${bindings.DeptCode}"/>
    It’s easy to understand that model="${bindings.EmpView1}" or model="${bindings.DeptCode}" are equivalent to multiple attribute bindings (data, validation, read-only, etc.), but it looks that the classes/methods resolving these equivalences and linking the bean to the corresponding DCControlBinding, are not public (or maybe I was not able to find them).
    How can we obtain programmatically, in Java, the same structure as described above (in XML)? The best would be to use the same classes used when the UIX XML document is parsed to create the page description.
    It would be very nice to be able to use a structure like
    tbl.setModel( new JUCtrlRangeBinding(...) );
    txt.setModel( new JUCtrlValueBinding(...) );
    or maybe
    txt.setAttribute( "model", new TextInputModelBoundValue(...) ) etc.
    In JSF we can do something like:
    ValueBinding vb = application.createValueBinding(value);
    component.setValueBinding(attributeName, vb);
    Can we do something similar in UIX?
    Any help will be appreciated,
    thanks,
    Mircea Ionita

    Since the code is already written, it's a pity that we can't use/extend it. I don't like to say it (sorry) but I find this design choice (implement the "model" only into the XML parsing layer) a little bit strange (or maybe I don't understand... ;-) ). We should (or we are supposed to) be able to do in java everything that we can do in XML.
    I would like to find more support/help for the programmatic approach. I have the feeling that you are too focalised on "use-our-state-of-the-art-tools/wizards-to-write-the-code-for-you" and you forgot that this is not suitable for all projects. E.g. our application creates the user interface according to a layout defined by each user. To generate it, we need to use at maximum the extension mechanism and we can't simply relay on "rendered" attribute etc.
    -When should we expect this new UIX release?
    -What about the UIX controller? The Struts controller will replace it?
    -What about the source code of uixexp2-demo.jar (distributed with ADF_UIX_component_guide)?
    -Why while debugging we can't set a method/class breakpoint on UIX classes (to understand the data flow) - the stack is secret?
    Thanks

  • Data Binding in ADF UIX example trouble

    Two related questions:
    From the help example 3. Data Binding in ADF UIX example trouble in JDeveloper on UIX. If this worked I was going to run a small java class that captures the login and passes it as a messagebox with a Welcome login name on the first page, but I can't get past the example and path problems.
    From the example..."
    package yourpackage;
    import java.util.Date;
    public class CurrentDateBean
    public CurrentDateBean() { }
    public String getTime()
    return (new Date()).toString();
    Now, we want to change the page so it uses getTime(). We need to do three things: Tell UIX to data bind the text attribute. Add a <dataScope> to the page to provide data to the content. Write a small "data provider" in Java that can access the bean. First, we'll data bind "text": <text xmlns="http://xmlns.oracle.com/uix/ui"
    text="${uix.data.currentDate.time}"/>The example has one small change. The value is changed to ${uix.data.currentDate.time}, which is an expression that defines the data. This is shorthand for "get the time property from currentDate." If you tried running this example, you'd see nothing. That iss because we haven't given currentDate to the page, so the databinding failed, and the "text" is left to null. We do this by adding <dataScope> to the page: <dataScope xmlns="http://xmlns.oracle.com/uix/ui">
    <provider>
    Q#1?? Trying to follow the demo. The method class and method name do not seem to match the names in the above class from the demo. Am I missing a point here, please help.
    <data name="currentDate">
    <method class="yourpackage.DataDemo" method="getCurrentDate"/>
    </data>
    </provider>
    <contents>
    <text text="${uix.data.currentDate.time}"/>
    </contents>
    </dataScope>
    Q#2?? When I try and apply the demo class to my home.uix XML file with
    "<?xml version = '1.0' encoding = 'windows-1252'?>
    <page xmlns="http://xmlns.oracle.com/uix/controller"
    xmlns:ui="http://xmlns.oracle.com/uix/ui"
    xmlns:data="http://xmlns.oracle.com/uix/ui"
    xmlns:ctrl="http://xmlns.oracle.com/uix/controller"
    xmlns:html="http://www.w3.org/TR/REC-html40" expressionLanguage="el">
    <content>
    <dataScope xmlns="http://xmlns.oracle.com/uix/ui">
    <provider>
    <!-- start Add DataProviders (<data> elements) here -->
    <data name="currentDate">
    <method class="us.mn.state.dot.apptrack.security.CurrentDateBean" method="getTime()"/>
    </data>
    <!-- end Add DataProviders (<data> elements) here -->
    </provider>
    <contents>
    <text text="${uix.data.currentDate.time}"/>
    <document>
    <metaContainer>"
    I get the following, and I don't know how to make the UIX XML accept the correct path, please help:
    �file:/C:/JDeveloper905p/jdev/mywork/ProjTrack/AppTrack/ViewController/public_html/home.uix: Parsing error, line 12, column 97: Could not find class us.mn.state.dot.apptrack.security.CurrentDateBean

    for question 1 the name of the class CurrentDateBean
    actually has nothing to do with the el expression
    uix.data.currentDate.time. The currentDate part of the
    el expression is coming from the method data provider part
    of your page:
    <data name="currentDate">
    <method class="yourpackage.DataDemo"
    method="getCurrentDate"/>
    </data>
    so if you changed the name of the data provider to "foo":
    <data name="foo">
    <method class="yourpackage.DataDemo"
    method="getCurrentDate"/>
    </data>
    your el would look like this:
    uix.data.foo.time
    by the way the uix.data part tells UIX to look for
    a <data> element define in the <provider> section of
    your dataScope.
    For question #2, do you have the java file
    us.mn.state.dot.apptrack.security.CurrentDateBean on
    your classpath and is it compiled? You will get that
    warning if it is not on your classpath.
    Also you are incorrectly interpreting the example. What
    you are doing is trying to reference the actual bean
    object and its getTime() method. What you want to do
    is write a method data provider that returns your
    CurrentDataBean. so uix.data.currentDate would return
    a CurrentDateBean instance object. the .time part of the
    el expression would tell UIX to look for a method named
    getTime() and use that value.
    let me know if you have any more questions.

  • Reset of current row after commit in ADF-UIX

    Dear experts,
    I have developed an application with Oracle JDeveloper 10g and ADF-UIX using BC4J. The problem is that wherenever a commit is performed the current row for the master table is reset which causes confusion for the end user.
    Do you know how can I solve that problem?
    Thank you in advance,
    Constantine

    ... I forgot to mention that I use JDeveloper 3.1 on Windows NT4.
    About my problem, it seems that a "key" does not exist in the record (Row object) i'm using for.
    So, what really is a "key"? Is this an internal complicated number or just the values of some data fields, indicated as "Primary Key" in the table?
    If the answer is the second one, I have to say that at the really before commit of the record, the value of my primary key fields is NULL, because they are filled up by a "sequence object" created in the database (triggered by a "TRIGGER BEFORE INSERT", which calls the "sequence.nextval" SQL command).
    So, I really have the value of my primary key fields just after committing the record in the database, and would explain everything.
    But is really this the "key"?
    Thanks

  • Adf uix and blaf

    Hello I've known The Browser Look and Feel (BLAF). I'd like to use that to do a form printable page (in a new window) without the navigation buttons . In next link there's an explanation but really I can't understand how I must use BLAF in my uix page:
    http://www.oracle.com/technology/tech/blaf/specs/printAndPreview_flow.html
    How can I do to interact a page uix with blaf?
    thanks!!

    The BLAF - as far as I understand it - is the usability concept behind UIX. So, UIX already implements (in part?) BLAF.
    To create a printable version of a page you use the showFacet element. The page "Customization of ADF UIX" will show you how to use it. Search the help for "showFacet".
    The facet already removes lots of elements not suitable for printing from the provided LAFs. You can do a
    rendered="${uix.renderingContext.rendererManager.facet!='printable'}in your controls to further control the visibility of elements.
    Sascha

  • [ADF UIX] LOVs, what does the "dot" path expression do?

    Hi
    In developing an ADF UIX web page, I've let JDeveloper create a messageLovInput on the "ExternalSource" field for me as follows:
    <messageLovInput
    model="${bindings.ExternalSource}"
    id="${bindings.ExternalSource.path}"
    destination="refCodesExternalSourceLevelOneLov.uix"
    partialRenderMode="multiple"
    partialTargets="_uixState"/>
    You'll notice that the id is set to blah-de-blah ".path". I can't find mention in the documentation of what the .path does. I think it should be documented in the section "About the Properties of the ADF Bindings" but has been excluded.
    Does anybody have any idea what this binding value provides? And specifically what functionality it provides in the id as a apart of a messageLovInput?
    Thanks!
    CM.

    Or to be more specific, the messageLovInput supplying the following ID with ".path":
    <messageLovInput
    model="${bindings.DepartmentId}"
    id="${bindings.DepartmentId.path}"
    destination="lovWindow0.uix"/>
    ...is used by the LOV lovSelect event "SET" call target property below in returning a value to the calling page?
    <event name="lovSelect">
    <set property="inputValue"
    value="${bindings.DepartmentId.inputValue}"
    target="${data.departmentsUIModel.DepartmentId}"/>
    </event>
    .....and trying something like the following to return more than one field to the calling page would be pointless:
    <event name="lovSelect">
    <compound>
    <set property="inputValue"
    value="${bindings.DepartmentId.inputValue}"
    target="${data.departmentsUIModel.DepartmentId}"/>
    <set property="inputValue"
    value="${bindings.DepartmentName.inputValue}"
    target="${data.departmentsUIModel.DepartmentName}"/>
    </compound>
    </event>
    ..... as the calling messageLovInput can only supply one ID .path?
    Oops, sorry, I hope that isn't too long winded. It's at the end of a very long day for me.....
    Thanks for your help!
    CM :)

  • URGENT: Deployment of ADF UIX application to Oracle App Server 10g

    Hi,
    Please let me know of documentation of how to deploy an ADF UIX application developed using Jdeveloper9.0.5.2 to Oracle Application Server 10g.
    I have already created an WAR and EAR deployment profile. and also an ORacle APp server connection from the connections tab in Jdeveloper.
    Thanks a lot.

    Have a look at the JDeveloper online help (F1) there is a complete chapter about deploying:
    http://helponline.oracle.com/jdeveloper/help/state/content/destination.2%7E9%7E1%7E6%7E/navSetId.jdeveloper/oldNavId.0/navId.0/oldNavSetId.jdeveloper/
    Basically you need to deploy the ADF runtime libraries (use the ADF Runtime Installer), and then deploy your WAR.

  • ADF-UIX- How to populate multiple input fields from an lov?

    Like in Forms Developer where using an LOV we can populate multiple tex input items on selection of a value from the LOV, is it possible for us to do the same in ADF UIX.
    Iam usiing JDeveloper 10.1.2

    Have a look at this previous post:
    Re: Can return messageLovinput more than one value?

  • Has Adobe Acrobat 8.0 Standard Edition Reached It's End-Of-Life for Updates?

    I am trying to reinstall Adobe Acrobat 8.0 and can't seem to get updates online?  Am I doing something wrong or has the product reached it's End-of-Life?

    CPAGeek you can download the applicable updates at Product updates.

  • Display CLOB value in multiple rows in ADF UIX

    Hi,
    I have an ADF UIX application that uses data that are stored in a CLOB column in an Oracle Database.
    The table data is presented in a simple table in page1.uix, I use BC4J for accessing the Database and Oracle JDeveloper 9.0.5.2.
    The problem is that the CLOB data appear properly (meaning the rows appear OK) only in a frame (messageTextInput element) of a predefined size and if I change the element into a styledText or a formattedText the frame will not appear, but all the CLOB characters appear in a single row.
    Does anyone know how I can present the CLOB text data in a UIX page, without having a frame around the text, and at the same time keep the CLOB text in multiple rows?

    There's no completely trivial way. You'd have to do a bit of extra processing of your CLOB data. The most straightforward work to do is to convert "\n" into "<br>", and then pass that into a <formattedText>.

Maybe you are looking for