This content has been marked as final. Show 14 replies
Can you post the exact code you're using - it's a little hard to visualize your code from your description.
Here's the relevant part of the script:
Document doc = patExecContext.getProcessDataDocumentValue("/inputform/form-data/data/xdp/datasets/data/p urchaseOrder");
I've tried as many variations on the arguments string as I can think of. The root element of the document is the purchaseOrder.
The problem I'm really trying to solve is that the PO has an unbounded collection of lineItems, and I want to iterate over that collection to calculate a subtotal. I was thinking I could make a DOM from the Document and then do whatever I need to with the DOM, since I already have experience with that.
Any and all suggestions welcome.
getProcessDataDocumentValue only works on a Document type of variable. It looks like your "inputform" variable is of type "form", so this is never going work. Also, you need to prefix all process variables with "/process_data/" i.e. "/process_data/inputform/form-data/..." Non XML variables require an additional ampersand i.e. "/process_data/@myint".
I'm pretty sure that if you call getProcessDataValue(/process_data/inputform/form-data/data/xdp/datasets/data/purchaseOrde r") you'll get a DOM node, and from there you should be able to navigate through the rest of the document. (I don't have the environment set up on my current machine to validate this - let me know if you have problems.)
In my case, getProcessDataValue() returns an org.w3c.doc.Element. I can get everywhere I need to go from there.
Many thanks Howard --
I have add these code in script component ,and when I test the code ,it can't print anything out.Could someone tell me why?
String teststr = patExecContext.getProcessDataStringValue("/process_data/@status");
Thanks a lot!
print() isn't a valid java command. Try System.out.println(...);
One of the advantages of building a custom QPAC rather than using the Script QPAC is you get to compile it, which finds errors like this :-)
Thanks for your answer.But I have tested that "print" can work and I found that the method "getProcessDataStringValue" in my code can not work.If I add the first line ,nothing printed out and If I commented it, "aa" was printed.
So ,Could anyone tell me how to make "getProcessDataStringValue" work?
Woops, sorry. I wasn't aware of print(). As you can see, I'm not an expert on the Script qpac :-)
One problem you might have is that @status is an integer, and you're trying to get it as a string. I would hope that the script qpac would cast it for you, but maybe not. Perhaps try getProcessIntValue()?
Is it possible to use patExecContext.getProcessDataStringValue() in a script QPAC to read the value from a form field? My form has a schema, so the call would look similar to this:
System.out.println("MyField: " +
I have tried many combinations but cannot get it to work. Do I have to get the org.w3c.doc.Element and traverse the DOM to get my value?
That looks like it should work.
Try the same expression in the SetValue QPAC, making sure that the expression is correct and that the element has a value. You can use the VariableLogger QPAC (http://www.avoka.com/avoka/qpac_library.shtml) to verify that you're getting the value you expect.
void setProcessDataListValue(java.lang.String aPathLocation, java.util.List aVal) method ?
Can I set a repeating section value in the form by using that method. I thought to give the path location of the repeating field like :
and created an example List object like
ArrayList alist=new ArrayList();
but I get ClassCastException error. List is an interface and extended by the ArrayList class. Why do I get this ? Isn't it possible to set repeating section values ?
LiveCycle 7.2 introduced the concept of Lists and Maps. These are separate types of variables to repeating sections within the XML of a form. It would be nice if you could use them interchangably, but you can't.
Setting repeating sections in a Form is quite difficult, requiring quite detailed knowledge of the internals of Form Variables. What is it that you're trying to achieve, there might be an easier way to do it?
Setting a repeating section in an XML variable is a little easier, but you still basically need to get an org.w3c.Document object, and manipulate it using the Document apis. Fiddly.
Let me know what you're tyring to achieve, I let you know if I can think of a simple way of doing it.
I am just trying to set the repeating fields in my form. Acrobat Reader does not let using web services(requires reader extensions) so I try to find alternative ways of importing data into my form. I can set some fields by using setProcessDataStringValue method. I just wonder is there a method in the api to set repeating fields in the form.
Where is the data coming from that you're trying to insert into the form? If it's coming from a SQL query, our SQLPlus qpac will correctly do this. If it's just some data you want to set, a special QPAC would probably be the best solution. We can talk about this separately if you want: htreisman-at-avoka.com