List to array question

I have a list stored in mysql database that looks like this:
12, 45, A, 87, B, 98
I need to use coldfusion to retreive the list and convert
each item to an element of an array. i.e.:
tempArray [0] = 12;
tempArray [1] = 45;
and so on. I need to do this because I'm returning the
created array to flash.
Thanks for your help!

If you literally want to return 12, 45, A, 87, B, 98, then
understand that is not an array, it's a list. The example in your
first post indicated you wanted an array - tempArray[1] = 12,
tempArray[2] = 45, etc. Which is it, or am I confused?
BTW, you don't need the [,] in the ListToArray function - I'm
surprised it did not throw a compile error. Just do this: <cfset
tempArray = ListToArray(detailsList)>

Similar Messages

  • Need help on creating a linked list with array...

    I want to create a linked listed using array method. Any suggestion on how would I start it.
    thanks

    That means I want to implement linked list using an
    array.I believe you mean you want to implement list using an array. Linked list is a very different implementation of a list, which can be combined with arrays for a niche implementation of list, but I don't think this is what you're talking about.
    Do you mind if we ask why you don't want to use ArrayList? It does exactly what you specify, plus it will increase the size of the internal array as necessary to ensure it can store the required elements.
    If you really want to make your own, have a look at the source for ArrayList (in src.jar in your JDK installation folder) - it will answer any questions you have. If you don't understand any of the code, feel free to post the relevant code here and ask for clarification.

  • Casting List to Array of Unknown SubClass

    How do I cast a java.util.List to an array of a unknown subclass of a known parent class?
    Parent[] parents = someMethod();
    // someMethod returns ChildA[] or ChildB[] both extends Parent and are unknown to this method
    List list = new Vector();
    for (int i=0;i<parents.length;i++) {
      if (parents.someBoolean)
        list.add(parents[ i ]);
    return (Parent[])list.toArray(?????);
    // return (Parent[])list.toArray(new Parent[]{});
    // Not of the child type, will cause ClassCastException
    // return (Parent[])list.toArray(parents);
    // Correct type, but uses size of parents which is potentially too big.Any way to do this without reflection?

    But is is that at any given time, the array contains all elements of
    either ChildA or ChildB? If not, I'm not sure how can you cast the
    entire array. If so, why not check for one of the elements in the list
    for its type using instanceof operator and then cast the entire array
    appropriately.
    I'm actually getting confused as to what exactly you are looking for.I should have been more clear on that point. Yes all elements will be of the same type, i.e., all of type ChildA or all of type ChildB.
    The problem comes in the fact that even though one has an Object[] array where all Objects are of type ChildA, a ClassCastException will still be thrown when casting to ChildA[]
    I have no idea what you're looking to do, but, regardless of what
    parent class you cast some instance as, the current implementation
    of each method is still going to execute. In other words, the
    toString method of some instance always returns the same String,
    whether you have it casted as a Parent or Child because it just
    returns the implemetnation of the current classTrue, except of course for methods that only exist on the child objects.
    A friend has given me a solution that I suspect will work:
    import java.lang.reflect.*;
    return (Parent[])list.toArray(Array.newInstance(parents[0].getClass(),0));

  • UISelectMany :  must be of type List or Array (ERROR with rich:pickLisT )

    Hi
    I have a problem with my <rich:pickList> I can't display the items. When executing the application I got the following error:
    java.lang.IllegalArgumentException: ValueBinding for UISelectMany :  must be of type List or Array
            at org.richfaces.utils.PickListUtils.findUISelectManyConverter(PickListUtils.java:59)
            at org.richfaces.utils.PickListUtils.findUISelectManyConverterFailsafe(PickListUtils.java:79)as the error message the selectItems is not a List but it is I can't understand.
    I transmit to you my backing bean
    @Stateful
    @Name("adminAction")
    @Scope(ScopeType.SESSION)
    public class AdminActionBean implements AdminActionLocal {
    @In(required=false)
       private List<String> customersChoice;
    @Out(required=false)
       private List<String> companyNames;
    @Factory("companyNames")
       public void selectCompanyNames(){
           setCompanyNames((List<String>) getEm().createQuery("select c.companyName from Customer c")
                        .getResultList());
    //getter() and settter...... my .xhtml page
    <rich:pickList id="customersChoice" value="#{customersChoice}">
                        <f:selectItems  id="companyNames" value="#{companyNames}" />
              </rich:pickList>Have you got any Idea. thanks for help
    regards
    bibou

    You might look up the SelectItem, as the value parameter for a f:selectItems must be a List<SelectItem>. Each SelectItem has both a value and a label.
    Or, you could use Tomahawk's t:selectItems which uses a more dataList-style attribute set to allow you to have the value be any List, and you can select items in the List's node to be the Label and the Value of the select option.
    Look em up, they're useful.

  • HT5312 Please help forgot the security question.. And no list: forgot security question? Send to your rescue email to....  Please help me...

    Please help me... Just forgot my security question.. N no list  forgot security question? Send to email ....... Below.. Only the question sould answer..  Please help me...

    Try going to the ExpressLane at https://expresslane.apple.com and then iTunes, iTunes Store, Password and Security Questions and select the Rescue Email to have that resent to you.

  • In my Adobe profile, where can I find a list of the questions that I have previously asked?

    After signing into my Adobe Communities account, how do I find a list of the questions that I have previously asked on forums.adobe.com.  For example, View Profile > Activity only displays one question in my account (though I have asked more).  Thanks.

    Look at your profile 'content' section for a complete list of the discussions you have created or participated in by replying to someone else. There are four threads excluding this one, going back to June 2014 when you first registered your AdobeID.
    /people/AdVictoriam/content

  • Would like to purchase PSE 12 to process Camera Raw files for the following cameras: Nikon D800, Nikon DF, Canon G9 and Pentax K-3 does the Raw Converter that comes with  PSE 12 when purchased recognize  the cameras listed in the question or do I need to

    Would like to purchase PSE 12 to process Camera Raw files for the following cameras: Nikon D800, Nikon DF, Canon G9 and Pentax K-3 does the Raw Converter that comes with  PSE 12 when purchased recognize  the cameras listed in the question or do I need to download  the camera Raw Version 8.3 ?

    While the G9 RAW files can be read by Adobe Camera RAW and Lightroom, these file are unsupported at this time. Here is a link to Adobe's latest list of cameras that are supported and this list came out yesterday http://www.adobe.com/products/photoshop/cameraraw.html
    I have not done a comparison between Lightroom and Canon's software but others have and say that Canon's software is clearly better. I am sure when Adobe updates their software again to include the G9 it will be a very good RAW converter as it is will most other cameras.

  • Put list in array

    Hi all,
    How to put list in array?? Is it true or not??
    What I mean is&#8230;I have list data like
    List 1 : 1 2 3 4
    List 2 : 2 3 4 5
    I want to put the list in array like
    [[1 2 3 4], [2 3 4 5]]
    Actually, can we do like this?
    Thank you very much.

    Hi jverd...
    Thank you very much....you help me a lot...I have another problem after settle the problem before...
    My problem is how to pass the list to another method??? I try to code but I get the object after I pass the list...My goals is want to compare line by line each other....
    Below is some of my code:      public static void hantarEquivalantClass(ArrayList s) {
              String[] s2 = (String[]) s.toArray(new String[0]);
              System.out.println("List Equivalance Class");
              System.out.println();
              for (int index = 0; index < s2.length; index++)
                        System.out.println(s2[index]);
              gunaStringTokenizer(s2);
             public static void gunaStringTokenizer(String[] s2) {
              List list = new LinkedList();
              for (int i = 0; i < s2.length; i++){
                   List list2 = new LinkedList();
                   StringTokenizer token = new StringTokenizer(s2, ",");
                   while (token.hasMoreTokens())
                        list2.add(token.nextToken());
                   list.add(list2);
              for (int i=0; i < list.size(); i++){
                   for (int j=0; j < list.size(); j++)
                        discernibility(list.get(i), list.get(j));
    //Here is problem....the object will pass not the list
    public static Set discernibility(List sRow, List sRowR) {
              Set s = new TreeSet();
              Iterator it = sRow.iterator();
                   while (it.hasNext()){
                        Object o = it.next();
                        if(!sRowR.contains( o ))
                        s.add( o );
              Iterator it2 = sRowR.iterator();
                   while (it2.hasNext()){
                        Object o2 = it2.next();
                        if(!sRow.contains( o2 ))
                        s.add( o2 );
              return s;

  • Photo Array Question

    I have a bit of a silly question about the photo array Apple uses in many of their publications, including the idea behind "CoverFlow". Check this link to see what I mean: http://arstechnica.com/reviews/os/mac-os-x-10-5.ars/2. (Bottom photo)
    Is there a way to achieve this? What software accomplishes this? I am a webmaster using iWeb.
    I have something similar on the page I have created, but the difference is my photos are straight as they descend, whereas Apple's are straight, yet not square, they seem to be turned, like in this top image of Ubuntu: http://www.taimila.com/?q=node/3. The photos are not rotated, but turned.
    Any software ideas?
    Any ideas at all?

    Resizing is a different issue altogether from format.
    It's safe to scale the image in ID regardless of the format. If you look in the info panel with the image selected you'll see two resolution numbers listed, actual and effective. Actual is just the resolution at the dimensions the image was saved and is essentially irrelevant. Effective resolution is what you have at the dimensions you are currently using, and that's the number that counts. If that number is in the range that is acceptable for the type of output you are using, there is no need to resize the image in Photoshop at all.
    If you MUST resize the image, then yes, convert to something besides jpeg if that's what it is to start. And keep in mind that up-sampling won't improve image quality in general, and downsampling more than 20% or so can cause you to lose fine details (but so will scaling down).
    Peter

  • Lists or Arrays

    Hi,
    I'm reading in a very complex XML file that has this format -- very simplified.
    <Report>
        <rule id="1">
            <testedObject/>
            <testedObject/>
        </rule>
        <rule id="2">
            <testedObject/>
            <testedObject/>
            <testedObject/>
            <testedObject/>
        </rule>
        <rule id="3"/>
    </Report>I was thinking the best way to do this is that I'll create a Parser, Report and TestedObject class. The question is how to keep track of the multiple Rules, and testedObjects? I was thinking of creating a List, but than an array would be easier. Is there a better way to do this without having to write everything to an external database?
    This is some of what I have so far ... if at all possible, I rather keep everything in memory so that I can do manipulations and calculations before writting everything out to a database in a new format.
    Parser.java
                   NodeList rules = doc.getElementsByTagName("Rule");
                   for (int s = 0; s < rules.getLength(); s++)
                        Element rule = (Element)rules.item(s);
                        // ReportEntry
                        ReportEntry ore = new ReportEntry(rule); ReportEntry.java
                   (bunch of setters)
                   NodeList Results = rule.getElementsByTagName("testedObject");
              if (Results.getLength() > 0) {
                   for (int s = 0; s < Results.getLength(); s++)
                     Element result = (Element)Results.item(s);
                    Rule or = new Rule(result);
              }

    Thank you for the feedback.
    I'll take a look at JAXB and XMLBeans. I've also contacted the developer to see if I can get the schema. I'm sure I can't come up with it, it's a very very convoluted xml file.
    The final destination of the tool is going to be a database, so I'm not using that as an interim holding area. I just wanted to do what I needed before connecting and dumping the rows, which sounds like I can without having too much issues.
    The reason I said that an array wold be easier is that if I parse the XML I know exactly how many time the element is repeated, so I can create the array to the size I need, (i.e. no trim needed), but that was before I know about JAXB or XMLBeans.

  • Arrays of arrays or list of arrays?

    Hi!
    I've spent 2+ hours now trying to figure this out/browsing the web.
    I have x number of rows in db, and now I'm trying to convert this data to an array.
    Like this:
    String foo[] = null;
    Array unordered[];
    int i=0;       
    while(ResultSet.next()){
       foo = new String[]{  ResultSet.getString("osa_id"),
                            ResultSet.getString("k_teksti"),
                            ResultSet.getString("linkki"),
                            ResultSet.getString("taso"),
                            ResultSet.getString("k_alaisuus")};
       unordered[i] = valiaikainen;
       i++;
    }Compiles, but gives errors during run. In PHP this is annoyingly easy. (Grin.) Also I have to manipulate the order of the unordered, depending the data that arrays it contain holds. Is there easier way? Any help welcome, as I'm out of ideas.
    Thanks
    -9902468

    OOps. Stopid question.
    Figured it out right after posting the question...
    Well newbies are newbies, eh?
    -9902468

  • How can I find a list of the questions I have made in the past?

    I have found this list to be invaluable. It has saved me a great deal of time. Unfortunately, I see that it is no longer there when I log in. If it is a feature that has not been discontinued by the Apple Community Forum, how do I get it back?

    babowa wrote:
    You might want to bookmark this:
    Niku
    This link shows the questions you asked; you can also choose the "participated".
    That did it. I'd rather have them present when I Iog in, but that's good enough. Thanks. Oh, yes, "participated".That also looks like it will be valuable.

  • Trying to send multiple types in a byte array -- questions?

    Hi,
    I have a question which I would really appreciate any help on.
    I am trying to send a byte array, that contains multiple types using a UDP app. and then receive it on the other end.
    So far I have been able to do this using the following code. Please note that I create a new String, Float or Double object to be able to correctly send and receive. Here is the code:
    //this is on the client side...
    String mymessage ="Here is your stuff from your client" ;
    int nbr = 22; Double nbr2 = new Double(1232.11223);
    Float nbr3 = new Float(8098098.809808);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);
    oos.writeObject(mymessage);
    oos.writeInt(nbr);
    oos.writeObject(nbr2);
    oos.writeObject(nbr3);
    oos.close();
    byte[] buffer = baos.toByteArray();
    socket.send(packet);
    //this is on the server side...
    byte [] buffer = new byte [5000];
    String mymessage = null; int nbr = 0; Double nbr2 = null;
    Float nbr3 = null;
    mymessage = (String)ois.readObject();
    nbr = ois.readInt();
    nbr2 = (Double) ois.readObject();
    nbr3 = (Float) ois.readObject();
    My main question here is that I have to create a new Float and Double object to be able to send and receive this byte array correctly. However, I would like to be able to have to only create 1object, stuff it with the String, int, Float and Double, send it and then correctly receive it on the other end.
    So I tried creating another class, and then creating an obj of this class and stuffing it with the 4 types:
    public class O_struct{
    //the indiv. objects to be sent...
    public String mymessage; public int nbr; public Double nbr2;
    public Float nbr3;
    //construct...
    public O_struct(String mymessage_c, int nbr_c, double nbr2_c, float nbr3_c){
    my_message = my_message_c;
    nbr = nbr_c;
    nbr2 = new Double(nbr2_c);
    nbr3 = new Float(nbr3_c);
    Then in main, using this new class:
    in main():
    O_struct some_obj_client = new O_struct("Here is your stuff from your client", 22, 1232.1234, 890980980.798);
    oos.writeObject(some_obj_client);
    oos.close();
    send code....according to UDP
    However on the receiving side, I am not sure how to be able to correctly retrieve the 4 types. Before I was explicitely creating those objects for sending, then I was casting them again on the receiving side to retrieve then and it does work.
    But if I create a O_struct object and cast it as I did before with the indiv objects on the receiving end, I can't get the correct retrievals.
    My code, on the server side:
    O_struct some_obj_server = new O_struct(null, null, null. null);
    some_obj_server = (O_struct)ois.readObject();
    My main goal is to be able to send 4 types in a byte array, but the way I have written this code, I have to create a Float and Double obj to be able to send and receive correctly. I would rather not have to directly create these objects, but instead be able to stuff all 4 types into a byte array and then send it and correctly be able to retrieve all the info on the receiver's side.
    I might be making this more complicated than needed, but this was the only way I could figure out how to do this and any help will be greatly appreciated.
    If there an easier way to do I certainly will appreciate that advise as well.
    Thanks.

    public class O_struct implements Serializable {
    // writing
    ObjectOutputStream oos = ...;
    O_struct struct = ...;
    oos.writeObject(struct);
    // reading
    ObjectInputStream ois = ...;
    O_struct struct = (O_struct)ois.readObject();
    I will be sending 1000s of these byte arrays, and I'm sure having to create a new Double or Float on both ends will hinder this.
    I am worried that having to create new objs every time it is sending a byte array will affect my application.
    That's the wrong way to approach this. You're talking about adding complexity to your code and fuglifying it because you think it might improve performance. But you don't know if it will, or by how much, or even if it needs to be improved.
    Personally, I'd guess that the I/O will have a much bigger affect on performance than object creation (which, contrary to popular belief, is generally quite fast now: http://www-128.ibm.com/developerworks/java/library/j-jtp01274.html)
    If you think object creation is going to be a problem, then before you go and cock up your real code to work around it, create some tests that measure how fast it is one way vs. the other. Then only use the cock-up if the normal, easier to write and maintain way is too slow AND the cock-up is significantly faster.

  • Database array questions

    Disclaimer: I am new to DB's.
    I'm looking at creating a MySQL database to hold tests done on DUTs (each with a specific serial). In theory, each DUT undergoes 3 tests. Each test produces a 401x9 2D array of DBLs. I am not concerned with the write speed to the DB, but I do want to optimize the read of the DB (potentially may need to retrieve 1000+ of these 2D arrays as fast as possible). I have the DB Toolkit; using LV 8.5. Questions:
    1. I have seen two different ways to save a 2D array in a DB mentioned: first, writing one row at a time with the DB Insert vi, resulting in a 2D array in a table (which is slow writing) or second, changing the 2D array to a variant and using the DB Insert vi, resulting in a single cell in a table. I know I can use other methods (parameterized vi, sql commands, user defined functions on the DB server, please do comment if you have found drastic performance increase with these methods), but of the two ways of storing a 2D array, can I read a 2D array from a table faster than reading a 2D array from a single cell? Whenever I need this data, I will read it all (i.e. I will never have to search for certain data within these individual 2D arrays)
    2. I may have installed the 8.2.1 DB toolkit, because the Database Variant to Data vi/function does not drop onto the Block Diagram when I drag it from the palette, and the Help has ???. I assume this is because it just points to the normal Variant to Data, which in 8.5 is in a subpalette as compared to 8.2.1. Any quick way to fix this?
    3. Any other general suggestions for a DB newbie? I've been trying to derive best practices from KB aritcles, this forum, and the web, but there is so much information and so many varying opinions I find it hard to narrow down best practices.
    Michael

    Hi Miguel,
    It looks like you are embarking on a very interesting project. Although you probably have seen many of the following documents, I've linked a few to get you started.
    Discussion forum using LabVIEW to read from tables
    Developer Zone article about developing a test system
    Knowledgebase article about imitations of speed with database toolset
    As far as your first question, I would suggest trying out both methods with simple code and testing with a small amount of values to determine  which one will be the fastest.
    Good luck with your project!
    Amanda Howard
    Americas Services and Support Recruiting Manager
    National Instruments

  • Array questions

    Hi, everyone.
    I'm writing a lab program which counts the number of occurances of English letters in a line of English text.
    The program has the following requirements
    Assume that we input only lowercase English text
    The program should be able to count the number of occurances of English letters in a text and print out both the number of occurances and the letters. Don't print out letters that don't exist in the text.
    I write my code as following:
    import java.util.*;
    public class Translator
    public static void main(String[]args)
         Scanner sc = new Scanner(System.in);
         System.out.println("Please enter text:");
         String text = sc.nextLine();
         char[] input = text.toCharArray();
        public static void countLetters(char [] input)
            System.out.println("Letter           Number of occurances");
            int[] alphabet = new int[26];
            for (int i=0; i<input.length; i++)
                if (input=='a')
    alphabet[0] += 1;
    else if(input[i]=='b')
    alphabet[1] += 1;
    else if (input[i]=='c')
    alphabet[2] += 1;
    else if (input[i]=='d')
    alphabet[3] += 1;
    else if (input[i]=='e')
    alphabet[4] += 1;
    else if (input[i]=='f')
    alphabet[5] += 1;
    else if (input[i]=='g')
    alphabet[6] += 1;
    else if (input[i]=='h')
    alphabet[7] += 1;
    else if (input[i]=='i')
    alphabet[8] += 1;
    else if (input[i]=='j')
    alphabet[9] += 1;
    else if (input[i]=='k')
    alphabet[10] += 1;
    else if (input[i]=='l')
    alphabet[11] += 1;
    else if (input[i]=='m')
    alphabet[12] += 1;
    else if (input[i]=='n')
    alphabet[13] += 1;
    else if (input[i]=='o')
    alphabet[14] += 1;
    else if (input[i]=='p')
    alphabet[15] += 1;
    else if (input[i]=='q')
    alphabet[16] += 1;
    else if (input[i]=='r')
    alphabet[17] += 1;
    else if (input[i]=='s')
    alphabet[18] += 1;
    else if (input[i]=='t')
    alphabet[19] += 1;
    else if (input[i]=='u')
    alphabet[20] += 1;
    else if (input[i]=='v')
    alphabet[21] += 1;
    else if (input[i]=='w')
    alphabet[22] += 1;
    else if (input[i]=='x')
    alphabet[23] += 1;
    else if (input[i]=='y')
    alphabet[24] += 1;
    else alphabet[25] +=1;
    System.out.println("a");
    for(int i=0; i<input.length; i++)
    if (alphabet[i] > 0)
    System.out.println(input[i] +" "+alphabet[i]);
    Though having gotten no syntext error complain from the compiler, no matter what I input, the program returns nothing. At first I assumed that it's the first for loop's problem, so that I typed in some System.out.println() methods at the end of some elseif statements. But I still got nothing after this trial. So that I guess it's the char[] input = text.toCharArray();'s problem.
    Have the input[i] elements really stored any character (I tried to convert the input string into char array) after I typed char[] input = text.toCharArray();'s problem. ?
    My another question is: since the input[i] stores character, when I am trying to print out the letters that exist in the text through the last System.out.println() method in my code, I can use input[i] to represent the letter which I want to print. Is it right?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    I figure out now that the problem is caused by the last for loop. I modify it as following:
    for(i=0; i<26; i++)
                if (alphabet[i] > 0)
                System.out.println('a'+i +"          "+alphabet);
    }After the modification, now I can get the right answer. The only problem I have now is trying to convert the interger number produced by 'a'+i back into character. I tried to replace 'a'+i with toChar('a'+i), but it doesn't work. Can you give me some explanation? Thank you very much!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

Maybe you are looking for

  • Safari crash report endless loop - Please help

    My safari crashed at some point. Now whenever i open it, it has the window to restore them etc... But then emediatly open the crash report sumission window, telling me to chose re-open. I click it, it reopens safari, only to open the crash report win

  • How to load a Class Dynamically?

    hi, I have the following problem.I am trying to load a class dynamically.For this I am using ClassLoader and its Loadclass method.My code is like this, File file = filechooser.getSelectedFile(); ClassLoader Cload = this.getClass().getClassLoader(); S

  • USTRD tag is showing only 1 Pyt Ref. data in SEPA XML File

    Hi Team, For one of our client they required Payment reference field (20 chars per invoice) in <RmtInf> < Ustrd> Tag in DMEE instead of Inv. Reference to clear the invoices. We have done the changes for that requirement then now we are getting 20 cha

  • How to use fault message for error handling.

    HI Anybody has an idea about how we use fault messages to handle errors in XI Thanks Debraj

  • Relative links not working in Safari

    Our web site has many PDFs and aspx files that link to each other. In a PDF, when we click on a relative link, the following message appears: Safari can't open "filename.pdf" because the first character of its address is not valid. When we loook in t