JSF and links with parameters to restore jsf page state

I've been developing a forum using JSF. It's going to be something similar to the one we are just using.
If a user, while browsing forum, find something interesting he should have a possiblity to copy URL form his browser and give it to his friend.
The URL should contain all necesary parameters to restore a same view (a subpage of a forum etc) a first user had. What's best approach to do it ?
Say, I have a few AJAX components on a forum page, how can I restore their states ? What's even more interesting how can I generate add parameters to URL in a browser ?
I've found a good solution for my problem:
"PrettyFaces is an OpenSource extension with enhanced support for +JavaServer
Faces+ - JSF 1.1, 1.2 and 2.0 - enabling creation of bookmark-able,
pretty URLs. PrettyFaces solves the "RESTful URL" problem elegantly,
including features such as: page-load actions, seamless integration with
faces navigation, dynamic view-id assignment, managed parameter
parsing, and configuration-free compatibility with other web frameworks"

best approach would be http://www.phpbb.com/ :-)
seems crazy going to all that hassel, phpbb is so simple, infact a lot of jsf forums such as primefaces [http://primefaces.prime.com.tr/forum/] use phpbb, as you can have your fourm up and running in no time
Edited by: pNev on 3 Meith 2010 00:38

Similar Messages

  • Download link with parameters.

    I've created a generic download function that takes a couple of parameters. The function works but now I'm trying to find out how to provide a download link that has the parameters filled in based on some page items.
    Page items:
    P38_export_type: The user can select what kind of data to download
    P38_filename: The user can provide a filename
    What I've tried is to create a button: Redirect to URL
    Although this creates a link, the parameters are filled on page load. This is to early, I need the values at the time the button is pressed.
    Any ideas how to do this?

    Hi thanks,
    In the meantime I figured out something similar.
    function my_redirect ()
    } I struggled a bit with the owner value before I decided to put it in a hidden field. Passing it as a variable is a better idea.
    It seems that accessing the item values can be done in several ways.
    redirect or location.href=URL ? any preference?

  • How to Create Company and link with Plant

    Dear All
    Kindly help me to create Company and link with Plant and Storage Location through SPRO.
    Kindly trll me TCODE.
    Waiting for Reply
    Thanks & Regards

    Go to OX02 and create a company code by copying the standard company code 0001 / 1000
    Then go to OX10 and create a plant by copying the standard plant 0001 / 1000
    OX09 - maintain storage loaction for the created plant
    OX08 - create purchase org copying from standrard 0001 / 1000
    Go to OX18 and assign your plant to company code
    OX17 assign purchase org to plant
    In order to get the tcode go to SPRO and in the top menu click on additional informations - additional information - display key - IMG activity.
    After you select this then in the SPRO you have a column additional information comes up. each and every activity in SPRO will have and additional informatiom, in the additional information the last 4 characters is tcode.
    Eg : SIMG_CFMENUSAPCOX02 this is the additional information for CC. the last 4 characters OX02 is the tcode

  • Is it possible in jsf? Action with parameters????

    I have a NavigationItem, a object of myfaces.....
    And when is clicked it, I want to create a new pane, based on the navigationItem clicked, obviuosly,
    How I can submit a action with parameters???
    Is it possible?
    thanks all !

    I will try to explain better.
    I create menus dynammicaly....
    and this menus has NavigationMenuItems, all componentes of myFaces
    The navigationMenuItem is inherited of SelectItem.....
    and creating it dynamically I need to put a action, and the backing bean has a method that return a string , but the value returned is always null, and I will to know How things I will do depending the parameters (like request parameteres) are passed through the action...
    but I do not know how to set the action dynamically, when the method setAction expect a string and not a MethodBinding.....
    And how I will to know after, what navigationMenuItem was clicked ??
    I don't know if are answers to this questions, I'm not sure about the limitations of web development and jsf, but I must to do it...

  • A Link with parameters to another page in a report

    Hi, I need to pass a link to another page with parameter, all in a report - But I can't use the column link because I already use to another link.

    Hi, I need to pass a link to another page with
    parameter, all in a report - But I can't
    use the column link because I already use to
    another link.
    Help!!Why not read the values from the calling page in the new page? They are there and available.. If you call page 2 from page 1, all the items on page one are available to page 2...
    Thank you,
    Tony Miller

  • Runtime error after successful compile and link with cl.exe

    Finally, got the configuration for cl.exe and link.exe right and got a successful compile and link to produce a dll. Then ran the main method of my Java class. The main method calls the constructor, and loading the class runs the static block which loads the native dll. I get one of those error files of the type hs_err_pid4064.log. The file is as follows:
    # An unexpected error has been detected by Java Runtime Environment:
    # Internal Error (0xe06d7363), pid=4064, tid=3576
    # Java VM: Java HotSpot(TM) Client VM (10.0-b22 mixed mode, sharing windows-x86)
    # Problematic frame:
    # C [kernel32.dll+0x12aeb]
    # If you would like to submit a bug report, please visit:
    # http://java.sun.com/webapps/bugreport/crash.jsp
    # The crash happened outside the Java Virtual Machine in native code.
    # See problematic frame for where to report the bug.
    --------------- T H R E A D ---------------
    Current thread (0x00395800): JavaThread "main" [_thread_in_native, id=3576, stack(0x003b0000,0x00400000)]
    siginfo: ExceptionCode=0xe06d7363, ExceptionInformation=0x19930520 0x003fdf14 0x02de7b04
    EAX=0x003fde4c, EBX=0x00000000, ECX=0x00000000, EDX=0x02f80600
    ESP=0x003fde48, EBP=0x003fde9c, ESI=0x003fdedc, EDI=0x003fdedc
    EIP=0x7c812aeb, EFLAGS=0x00000206
    Top of Stack: (sp=0x003fde48)
    0x003fde48: 02de1de0 e06d7363 00000001 00000000
    0x003fde58: 7c812aeb 00000003 19930520 003fdf14
    0x003fde68: 02de7b04 02e80087 003fdf14 003fdf28
    0x003fde78: 02e99500 00000039 003fde70 00000039
    0x003fde88: 003fdec8 02e81a50 02eabf00 003fdf14
    0x003fde98: 003fdf28 003fdedc 02dce583 e06d7363
    0x003fdea8: 00000001 00000003 003fded0 02a72388
    0x003fdeb8: 00000000 e06d7363 00000001 00000000
    Instructions: (pc=0x7c812aeb)
    0x7c812adb: 8d 7d c4 f3 a5 5f 8d 45 b0 50 ff 15 10 15 80 7c
    0x7c812aeb: 5e c9 c2 10 00 85 ff 0f 8e 36 93 ff ff 8b 55 fc
    Stack: [0x003b0000,0x00400000], sp=0x003fde48, free space=311k
    Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
    C [kernel32.dll+0x12aeb]
    C [summarizer37.dll+0x1e583]
    Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
    v ~BufferBlob::Interpreter
    v ~BufferBlob::Interpreter
    v ~BufferBlob::Interpreter
    v ~BufferBlob::StubRoutines (1)
    --------------- P R O C E S S ---------------
    Java Threads: ( => current thread )
    0x02a66000 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3108, stack(0x02d10000,0x02d60000)]
    0x02a58000 JavaThread "CompilerThread0" daemon [_thread_blocked, id=2488, stack(0x02cc0000,0x02d10000)]
    0x02a56c00 JavaThread "Attach Listener" daemon [_thread_blocked, id=2508, stack(0x02c70000,0x02cc0000)]
    0x02a56000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=3720, stack(0x02c20000,0x02c70000)]
    0x02a51800 JavaThread "Finalizer" daemon [_thread_blocked, id=2968, stack(0x02bd0000,0x02c20000)]
    0x02a4d400 JavaThread "Reference Handler" daemon [_thread_blocked, id=600, stack(0x02b80000,0x02bd0000)]
    =>0x00395800 JavaThread "main" [_thread_in_native, id=3576, stack(0x003b0000,0x00400000)]
    Other Threads:
    0x02a4c000 VMThread [stack: 0x02b30000,0x02b80000] [id=2528]
    0x02a67000 WatcherThread [stack: 0x02d60000,0x02db0000] [id=1604]
    VM state:not at safepoint (normal execution)
    VM Mutex/Monitor currently owned by a thread: None
    def new generation total 960K, used 195K [0x22960000, 0x22a60000, 0x22e40000)
    eden space 896K, 21% used [0x22960000, 0x22990c38, 0x22a40000)
    from space 64K, 0% used [0x22a40000, 0x22a40000, 0x22a50000)
    to space 64K, 0% used [0x22a50000, 0x22a50000, 0x22a60000)
    tenured generation total 4096K, used 0K [0x22e40000, 0x23240000, 0x26960000)
    the space 4096K, 0% used [0x22e40000, 0x22e40000, 0x22e40200, 0x23240000)
    compacting perm gen total 12288K, used 22K [0x26960000, 0x27560000, 0x2a960000)
    the space 12288K, 0% used [0x26960000, 0x269658c8, 0x26965a00, 0x27560000)
    ro space 8192K, 66% used [0x2a960000, 0x2aeb0e10, 0x2aeb1000, 0x2b160000)
    rw space 12288K, 52% used [0x2b160000, 0x2b7b04c8, 0x2b7b0600, 0x2bd60000)
    Dynamic libraries:
    0x00400000 - 0x00423000      C:\Program Files\Java\jdk1.6.0_06\bin\javaw.exe
    0x7c900000 - 0x7c9af000      C:\WINDOWS\system32\ntdll.dll
    0x7c800000 - 0x7c8f6000      C:\WINDOWS\system32\kernel32.dll
    0x77dd0000 - 0x77e6b000      C:\WINDOWS\system32\ADVAPI32.dll
    0x77e70000 - 0x77f02000      C:\WINDOWS\system32\RPCRT4.dll
    0x77fe0000 - 0x77ff1000      C:\WINDOWS\system32\Secur32.dll
    0x7e410000 - 0x7e4a1000      C:\WINDOWS\system32\USER32.dll
    0x77f10000 - 0x77f59000      C:\WINDOWS\system32\GDI32.dll
    0x7c340000 - 0x7c396000      C:\Program Files\Java\jdk1.6.0_06\jre\bin\msvcr71.dll
    0x6d870000 - 0x6dac0000      C:\Program Files\Java\jdk1.6.0_06\jre\bin\client\jvm.dll
    0x76b40000 - 0x76b6d000      C:\WINDOWS\system32\WINMM.dll
    0x6d320000 - 0x6d328000      C:\Program Files\Java\jdk1.6.0_06\jre\bin\hpi.dll
    0x76bf0000 - 0x76bfb000      C:\WINDOWS\system32\PSAPI.DLL
    0x6d820000 - 0x6d82c000      C:\Program Files\Java\jdk1.6.0_06\jre\bin\verify.dll
    0x6d3c0000 - 0x6d3df000      C:\Program Files\Java\jdk1.6.0_06\jre\bin\java.dll
    0x6d860000 - 0x6d86f000      C:\Program Files\Java\jdk1.6.0_06\jre\bin\zip.dll
    0x10000000 - 0x10006000      D:\Servers\SummarizerServer\native\jsummarizer.dll
    0x02db0000 - 0x02df2000      D:\Servers\SummarizerServer\native\summarizer37.dll
    0x02e00000 - 0x02f6d000      D:\Servers\SummarizerServer\native\platform37.dll
    0x4a800000 - 0x4a893000      D:\Servers\SummarizerServer\native\icuuc30.dll
    0x4ad00000 - 0x4b52d000      D:\Servers\SummarizerServer\native\icudt30.dll
    0x5b860000 - 0x5b8b5000      C:\WINDOWS\system32\NETAPI32.dll
    0x77c10000 - 0x77c68000      C:\WINDOWS\system32\msvcrt.dll
    VM Arguments:
    jvm_args: -Djava.library.path=native
    java_command: com.sra.pipeline.servers.summarizer.JSummarizer
    Launcher Type: SUN_STANDARD
    Environment Variables:
    JAVA_HOME=C:\Program Files\Java\jdk1.6.0_06
    CLASSPATH=.;C:\Program Files\Java\jre1.6.0_06\lib\ext\QTJava.zip
    PATH=D:\Servers\SummarizerServer\native;C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT
    USERNAME=Jim Jones
    PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 7, GenuineIntel
    --------------- S Y S T E M ---------------
    OS: Windows XP Build 2600 Service Pack 3
    CPU:total 1 (1 cores per cpu, 1 threads per core) family 15 model 2 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2
    Memory: 4k page, physical 1048032k(245796k free), swap 2521804k(1060880k free)
    vm_info: Java HotSpot(TM) Client VM (10.0-b22) for windows-x86 JRE (1.6.0_06-b02), built on Mar 25 2008 01:22:05 by "java_re" with MS VC++ 7.1
    time: Mon Sep 01 15:22:10 2008
    elapsed time: 0 seconds
    The dll I'm wrapping is C++ VC++ compiled.
    Would like to know what I do to trouble-shoot this error and hope to fix it?

    Using Java print statement was able to show that the my JNI dll was being loaded and that the problem was in the first call to one of my JNI functions. Then by using "DebugBreak()" in that function and gradually moving it down line by line through the function was able to isolate the line causing the problem. Unfortunately it is the line where I call a function from the dll I'm wrapping. See newer thread.

  • Deploying forms and reports with parameters from portal

    hi , how do i build forms and reports from database limiting them with parameters from the login details on the portal on my application server.

    I had the same problem.
    I resolve with a new third party tool:
    I've found it on:
    searching "rundev".

  • BI - ABAP To pick the field from One table and link with 2nd table

    Hello, I am stuck to write the correct abap code. Requirement is that My Client BMW  California require the below:
    <b>1.</b>  list of invoices (BELNR) that a has tcode = FB01 and FBVB" from Table BKPF.  Account Number field (BELNR) is there in 0fiap_4 Data source
    <b>2.</b> Now Link the above invoice Number (BELNR)  that a has tcode = FB01 and FBVB" from Table BKPF to BMW Custom Table I_BMW_WI. - Field "PAT ID" which is the cocatenation of OBJNR (Object Number), Invoice Number and Purchase Year.  where PICK only thos PAT ID where "TYPEID"  Value = "BMW" in table I_BMW_WI.
    To solve Number 1 Please fix my abap code and help me to write the Code to Solve Number 2 and Link #1 AND #2.
    Please help me soon
    Code # 1
    case I_datasource.
    WHEN '0FI_AP_4'.
    loop at C_t_data into l_s_DTFIAP_3.
    l_tabix = sy-tabix.
    clear I_BMW_WI.
    if sy-subrc = 0.
    select single * from BKPF into I_BKPF where BELNR = l_s_DTFIAP_3-BELNR.
    Code below is not working
    (I_BKPF-TCODE = ‘FV50’) OR (I_BKPF-TCODE = ‘FB01’)
    modify I_FINAL.
    modify C_t_data from l_s_DTFIAP_3  index l_tabix.
    Code # 2 -
    Please help with templates.
    Soniya Kapoor

    Ad Code #1
    First of all the key for BKPF consists of:
    BUKRS, BELNR and GJAHR so I think you should use all key fields in your SELECT statement:
    select single * from BKPF into I_BKPF
    where BUKRS = l_s_DTFIAP_3-BUKRS and
          BELNR = l_s_DTFIAP_3-BELNR and
          GJAHR = l_s_DTFIAP_3-GJAHR.
    And why do you test SY-SUBRC after CLEAR ?
    Your IF statement should be after SELECT...
    And last but not least when you are using SELECT SINGLE you always get only one record so what is the purpose of LOOP statement ?
    Try following code:
    case I_datasource.
    WHEN '0FI_AP_4'.
      loop at C_t_data into l_s_DTFIAP_3.
        l_tabix = sy-tabix.
        select single * from BKPF into I_BKPF
          where BUKRS = l_s_DTFIAP_3-BUKRS and
                BELNR = l_s_DTFIAP_3-BELNR and
                GJAHR = l_s_DTFIAP_3-GJAHR.
        if sy-subrc = 0.
          if (I_BKPF-TCODE = ‘FV50’) OR
             (I_BKPF-TCODE = ‘FB01’).
            modify I_FINAL.
          modify C_t_data from l_s_DTFIAP_3 index l_tabix.

  • Add a link with command to print some pages document automaticly of a PDF

    Hello, I have a PDF document of 200 hundred pages. I would like to create a link which one will print determined pages when I click on.
    How can I do this ?
    For exemple, I have a link zone and when I clik on this zone I want to print automaticly the pages 3 to 14.
    Thanks a lot,
    Éric Gervais

    Use Acrobat JavaScript for the link's action:
    this.print(false, this.pageNum, this.pageNum);
    // Print a file silently
    this.print({bUI: false, nStart: 2, nEnd: 13, bSilent: true, bShrinkToFit: true, bPrintAsImage: false, bReverse: false, bAnnotations: false});

  • JSf and work with Clipboard

    I have this problem:
    I have JSP page with datatable and on disk I have an Excel file.
    I want to copy and paste from Excel file to datatable and vice-versa.
    To access the Clipboard I use:
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();and so on. It works in standalone application.
    But when I use copy or paste its used the Clipboard of server instead of client clipboard.
    Any idea how to solve this problem will be appreciated.

    Run it at the client side. If you want to use Java for this, use an applet or webstart application.
    By the way, that´s an odd requirement .. Copypaste from Excel on disk to a JSF datatable .. ?
    What´s the use of it? Where´s that disk which you´re talking about? At the client machine or server machine? If the client machine, do you realize that the server would only be able to access the client´s disk when they both runs at physically the same machine? The only way to let the server access the client´s file using a web application is to let the client upload the file to the server. Otherwise you can´t go around an applet or webstart application.

  • Problem to create a link with parameters using a PL/SQL function body

    Hi everybody,
    I need some help to create a link on a SELECT statement.
    I have a region report with type "PL/SQL function body return SQL query".
    I would like to use a link using HTML tag <a href>.
    I know how to do the link, but I don't know to pass a parameters in <a href> statement.
    Always I tried it doesn't work well.
    My PL/SQL anonimous block is, (just with link) :
    q vARCHAR2(4000);
    q:='select     "INDICADOR"."NRINDICADOR" as "NRINDICADOR",';
    q:=q||'''<span style="font-weight:bold;">';
    q:=q||'''||TO_CHAR("TOTAL_INDICADOR"."VL_INDICADOR", ''999G999G999G990D00'')||''</span>''';
    q:=q||' as "VL_INDICADOR",';
    q:=q||'     "TOTAL_INDICADOR"."VL_META" as "VL_META" ';
    q:=q||' from     "TOTAL_INDICADOR" "TOTAL_INDICADOR",';
    q:=q||'     "INDICADOR" "INDICADOR" ';
    RETURN q;
    Thanks for any help,

    Your code is in a default value for an item, right?
    You need to make sure :P33_YEAR is not null and handle the error in the PL/SQL if it is.
    How is P33_YEAR populated? do you pass it in? check to see if it is making it there..
    Message was edited by:
    Bill Carlisle

  • Trying to use form or dynamic link with parameters in a portlet

    I have created a dynamic page and published it as a portlet. The dynamic page is my own customization page for a chart.
    Ont he same page as the portlet I have the chart I want to customize. I have tried defining the form action as the page itself with the extra custom parameters in the url and I have tried just building up a url and callong that url (if we have a link on the chart names that is what happens and it works). However, it doesn't work.
    It should read (and does when I use a javascript alert): http://ogg:7777/servlet/page?_pageid=134,148&_dad=portal30&_schema=PORTAL30&_mode=3&city=Berlin
    but instead using a form it reads:
    and using the link building method it reads:
    What is happening to the link in either case? Why is it being altered? I've left the form action blank and also tried hard coding the URL but still get the same response.

    We are doing something similar with our own customization form and the report it affects on the same page. We will also be doing the same thing with charts in the future. It took a great deal of trial and error, but we finally have a technique that works (even if it isn't ideal).
    1. The following is entered in your form in the "On successful submission of a form, execute this PL/SQL block or PL/SQL procedure" (this will retrieve your parameter value from your form and then call the page your form and report (or chart) are on):
    hv_myvariable varchar2(2000);
    l_store portal30.wwsto_api_session;
    -- Note that you have to add the 'A_' in front of your form field name!
    p_block_name => 'DEFAULT',
    p_attribute_name => 'A_MYVARIABLE'
    -- call the url of the page
    go ('http://host:node/servlet/page?_pageid=65&_dad=portal30&_schema=PORTAL30&_mode=3&myvariable='&#0124; &#0124;hv_myvariable);
    2. The following is entered in the report's "Additional pl/sql code- Before displaying page" to retrieve the parameters from the url:
    l_arg_names, l_arg_values, p_reference_path&#0124; &#0124;'.myvariable',
    3. At this point, the process should work, but it will clear out your form fields when you refresh your page. To prevent this, enter the following for the default value of your form field:
    Let me know if this works for you or if you have found other ways to accomplish some of these things. If anyone else can show us a better way to do this or any other useful techniques, we would greatly appreciate the help!

  • Printing pages and links with one click

    Is it possible to print a multiple page pdf document as well as any imbedded links in that document - with one click?

    Hi Sunnihval,
    No there isn't any option to print the mails as well as attachment with one go.
    You have to manually open the attachment and print.

  • Hyper Link With Parameters

    I have an display item on Page 1, which is a link.
    In the default box of its attributes I have
    @a href="f?p=&APP_ID.:197:&SESSION."@@font color = 'Red'@My [email protected]/[email protected]
    In the post I have replaced the < and > with a @
    This works perfectly well
    What I would like to do is when the link is clicked, go to Page 197 and set the Search field to equal a value from Page 1.
    ie, where :P197_SEARCH = :P1_TEXT
    Can I put this in the link ?

    Hello Gus,
    Yes, you can - http://download-uk.oracle.com/docs/cd/B31036_01/doc/appdev.22/b28550/concept.htm#BEIJCIAG

  • AddEventListener and Function with Parameters

    Hello guys
    I got this situation
             private function formTextHandler(text:String):void{
    where i want to send some additional information too
    so how could i do that?

       it seems like you will need to extend your text Component and Event class as well. Its not clear from your code that what component you are referring to . so generally you will extend your required component .
    you will need to addEvent Listener
    in your custom extended component and in the handler of that focusEvent you will dispatch your new custom event with the parameters from this FocusEvent you received and as well as new parameters that are also required by your new extended Event.
    Method of extending events is straight forward. e.g this a sample for extending Events you will need to modify it with the paramaters you require in your event .
        import flash.events.Event;
        public class AccountEvent extends Event
            public var accountObj:Object
            public static var NewAccount:String='newAccount'
            public function AccountEvent(type:String,newAccount:Object)
    and here is the code how to use this event
        import flash.events.Event;
        import flash.events.FocusEvent;
        import AccountEvent
        import mx.controls.TextInput
        public class customText extends TextInput
            public function customText()
            private function onFocus(e:FocusEvent):void{
                dispatchEvent(new AccountEvent(paramaters.....///here you will add your custom paramerters and 
               //you will catch this event in your main application rather then catching the focus in event

Maybe you are looking for

  • ITunes dosen't recognize iPhone?

    I have no idea why it stopped recognizing it... It still charges and iPhoto still recognizes it... Tried un(re)installing iTunes. Tried switching USB ports. Tried turning computer off Tried restoring iPhone.. Nothing works, I know the USB port is not

  • HT5129 How do I turn off MobileMe has been discontinued warning off.  I did not keep photo under gallery so there is no need to migrate.

    How do I turn off "MobileMe has been discontinued" warning off.  I did not keep photo under gallery so there is no need to migrate.  The warning keep on showing up after initial round.

  • Where has my disc space gone?  ...is my Mail inbox really 25 GB?

    It seemed to me that my disc was a bit full so I deleted a couple of movies and freed up 9 GB. A couple of days later, after doing a bit of word processing, I got a disc full message. Impossible, I thought. I did an audit of my space. Visible folders

  • CA Cryptographic service provider?

    Hello, I am planning to install Single tier Enterprise CA on a dedicated Windows 2008 R2 Server. We still have Windows XP SP3 workstations and I have some questions about the "cryptography" options on the Certificate Authority installation wizard. Th

  • Dreamweaver and XDR files

    I'm running through a tutorial on XML (XML for Web Designers ... Kevin Ruse) and am in the section on Schemas. The schema file has an extension of xdr. The book says it will open in DWMX2004, but DW says it can't find a valid editor for the file. It