This post was updated on .
I have created a simple service request to a local URL,
http://localhost:8080/patientapi/patient/IHN:123401 and then clicked the test button for the service. I get back an error Bad Request from our wildfly server. I used wireshark to capture the request and I see the following GET /patientapi/patient/IHN:123401 HTTP/1.1 Content-Type: none Cookie: JSESSIONIDSSO=czrXz3Zi9StVrRTK4BIIecmA4SoeXIGVi0DHoO_h Orbeon-Token: 700059509a55e3f77af76f8853b05cac2217feb3 Host: localhost:8080 Connection: Keep-Alive Cookie: JSESSIONID=Uf4ehK8tfEJJYaoU-vhtijnIV5vZn3eUpKDPcAAG.localhost Cookie2: $Version=1 Accept-Encoding: gzip,deflate HTTP/1.1 400 Bad Request Expires: 0 Cache-Control: no-cache, no-store, must-revalidate X-Powered-By: Undertow/1 Server: WildFly/11 Pragma: no-cache Date: Mon, 13 Aug 2018 02:12:57 GMT Connection: keep-alive Content-Type: text/html;charset=UTF-8 Content-Length: 70 <html><head><title>Error</title></head><body>Bad Request</body></html> After looking at the details of the error in our server I see in the request that Content-Type is specified as "none". This is not a valid mime type and the server rejects the request. I tried again using httpbin, a request to https://httpbin.org/headers which also included the content type of none. httpbin didn't reject the request and returned the json string. Again from Wireshark GET /headers HTTP/1.1 Content-Type: none Cookie: JSESSIONIDSSO=czrXz3Zi9StVrRTK4BIIecmA4SoeXIGVi0DHoO_h Orbeon-Token: 700059509a55e3f77af76f8853b05cac2217feb3 Host: httpbin.org Connection: Keep-Alive Accept-Encoding: gzip,deflate HTTP/1.1 200 OK Server: gunicorn/19.9.0 Date: Mon, 13 Aug 2018 02:25:33 GMT Content-Type: application/json Content-Length: 324 Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true X-Cache: MISS from mel-proxy.objectconsulting.com.au X-Cache-Lookup: MISS from mel-proxy.objectconsulting.com.au:3128 Via: 1.1 vegur, 1.1 mel-proxy.objectconsulting.com.au (squid/3.5.19) Connection: keep-alive { "headers": { "Accept-Encoding": "gzip,deflate", "Cache-Control": "max-age=259200", "Connection": "close", "Content-Type": "none", "Cookie": "JSESSIONIDSSO=czrXz3Zi9StVrRTK4BIIecmA4SoeXIGVi0DHoO_h", "Host": "httpbin.org", "Orbeon-Token": "700059509a55e3f77af76f8853b05cac2217feb3" } } But I get a orbeon error every time I try this 12:33:22,894 WARN [org.orbeon.oxf.xforms.processor.XFormsServer] (Unknown) xforms-submit-done|error - error while reading response body. {throwable: " +----------------------------------------------------------------------------------------------------------------------+ |An Error has Occurred | |----------------------------------------------------------------------------------------------------------------------| |Stream closed | |----------------------------------------------------------------------------------------------------------------------| |Application Call Stack | |----------------------------------------------------------------------------------------------------------------------| |----------------------------------------------------------------------------------------------------------------------| |Exception: java.io.IOException | |----------------------------------------------------------------------------------------------------------------------| |java.io.BufferedInputStream |getBufIfOpen |BufferedInputStream.java | 170| |java.io.BufferedInputStream |read |BufferedInputStream.java | 336| |java.io.FilterInputStream |read |FilterInputStream.java | 107| |org.orbeon.oxf.util.NetUtils |copyStream |NetUtils.java | 220| |org.orbeon.oxf.util.NetUtils |prepareFileItemFromInputStream|NetUtils.java | 565| |----------------------------------------------------------------------------------------------------------------------| |Exception: org.orbeon.oxf.common.OXFException | |----------------------------------------------------------------------------------------------------------------------| |org.orbeon.oxf.util.NetUtils |prepareFileItemFromInputStream|NetUtils.java | 567| |org.orbeon.oxf.util.NetUtils |inputStreamToAnyURI |NetUtils.java | 550| |.xforms.event.events.SubmitResponseEvent$$anonfun$1|apply |SubmitResponseEvent.scala | 123| |.xforms.event.events.SubmitResponseEvent$$anonfun$1|apply |SubmitResponseEvent.scala | 122| |org.orbeon.oxf.util.IOUtils$ |useAndClose |IOUtils.scala | 60| |orbeon.oxf.xforms.event.events.SubmitResponseEvent$|org$orbeon$oxf$xforms$event$ev|SubmitResponseEvent.scala | 122| |$event$events$SubmitResponseEvent$$readOrReturn$1$1|apply |SubmitResponseEvent.scala | 86| |$event$events$SubmitResponseEvent$$readOrReturn$1$1|apply |SubmitResponseEvent.scala | 85| |scala.Option |getOrElse |Option.scala | 121| |orbeon.oxf.xforms.event.events.SubmitResponseEvent$|org$orbeon$oxf$xforms$event$ev|SubmitResponseEvent.scala | 85| |ms.event.events.SubmitResponseEvent$$anonfun$body$1|apply |SubmitResponseEvent.scala | 91| |ms.event.events.SubmitResponseEvent$$anonfun$body$1|apply |SubmitResponseEvent.scala | 91| |scala.Option |flatMap |Option.scala | 171| |orbeon.oxf.xforms.event.events.SubmitResponseEvent$|body |SubmitResponseEvent.scala | 91| |.xforms.event.events.SubmitResponseEvent$$anonfun$5|apply |SubmitResponseEvent.scala | 173| |.xforms.event.events.SubmitResponseEvent$$anonfun$5|apply |SubmitResponseEvent.scala | 173| |org.orbeon.oxf.xforms.event.XFormsEvent$$anon$1 |apply |XFormsEvent.scala | 145| |org.orbeon.oxf.xforms.event.XFormsEvent$$anon$1 |apply |XFormsEvent.scala | 143| |scala.PartialFunction$class |applyOrElse |PartialFunction.scala | 123| |org.orbeon.oxf.xforms.event.XFormsEvent$$anon$1 |applyOrElse |XFormsEvent.scala | 143| |scala.PartialFunction$OrElse |applyOrElse |PartialFunction.scala | 170| |scala.PartialFunction$OrElse |applyOrElse |PartialFunction.scala | 171| |org.orbeon.oxf.xforms.event.XFormsEvent |getAttribute |XFormsEvent.scala | 104| |org.orbeon.oxf.xforms.function.Event |getEventAttribute |Event.scala | 53| |org.orbeon.oxf.xforms.function.Event |iterate |Event.scala | 38| |org.orbeon.saxon.sxpath.XPathExpression |iterate |XPathExpression.java | 141| |org.orbeon.oxf.util.PooledXPathExpression |org$orbeon$oxf$util$PooledXPat|PooledXPathExpression.scala | 172| |l.PooledXPathExpression$$anonfun$evaluateAsExtent$1|apply |PooledXPathExpression.scala | 109| |l.PooledXPathExpression$$anonfun$evaluateAsExtent$1|apply |PooledXPathExpression.scala | 109| |org.orbeon.oxf.util.DynamicVariable |withValue |DynamicVariable.scala | 42| |org.orbeon.oxf.util.XPath$ |withFunctionContext |XPath.scala | 62| |org.orbeon.oxf.util.PooledXPathExpression |evaluateAsExtent |PooledXPathExpression.scala | 108| |eon.oxf.util.XPathCache$$anonfun$evaluateAsExtent$1|apply |XPathCache.scala | 264| |eon.oxf.util.XPathCache$$anonfun$evaluateAsExtent$1|apply |XPathCache.scala | 264| |org.orbeon.oxf.util.XPathCache$ |withEvaluation |XPathCache.scala | 703| |org.orbeon.oxf.util.XPathCache$ |evaluateAsExtent |XPathCache.scala | 263| |org.orbeon.oxf.xforms.Variable |org$orbeon$oxf$xforms$Variable|Variable.scala | 95| |org.orbeon.oxf.xforms.Variable$$anonfun$1 |apply |Variable.scala | 46| |org.orbeon.oxf.xforms.Variable$$anonfun$1 |apply |Variable.scala | 44| |scala.Option |getOrElse |Option.scala | 121| |---8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<---| |.handlers.security.ServletAuthenticationCallHandler|handleRequest |ServletAuthenticationCallHandl| 57| |io.undertow.server.handlers.DisableCacheHandler |handleRequest |DisableCacheHandler.java | 33| |io.undertow.server.handlers.PredicateHandler |handleRequest |PredicateHandler.java | 43| |w.security.handlers.AuthenticationConstraintHandler|handleRequest |AuthenticationConstraintHandle| 53| |ow.security.handlers.AbstractConfidentialityHandler|handleRequest |AbstractConfidentialityHandler| 46| |rs.security.ServletConfidentialityConstraintHandler|handleRequest |ServletConfidentialityConstrai| 64| |.handlers.security.ServletSecurityConstraintHandler|handleRequest |ServletSecurityConstraintHandl| 59| |w.security.handlers.AuthenticationMechanismsHandler|handleRequest |AuthenticationMechanismsHandle| 60| |handlers.security.CachedAuthenticatedSessionHandler|handleRequest |CachedAuthenticatedSessionHand| 77| |ertow.security.handlers.NotificationReceiverHandler|handleRequest |NotificationReceiverHandler.ja| 50| |.handlers.AbstractSecurityContextAssociationHandler|handleRequest |AbstractSecurityContextAssocia| 43| |io.undertow.server.handlers.PredicateHandler |handleRequest |PredicateHandler.java | 43| |tension.undertow.security.jacc.JACCContextIdHandler|handleRequest |JACCContextIdHandler.java | 61| |io.undertow.server.handlers.PredicateHandler |handleRequest |PredicateHandler.java | 43| |.undertow.deployment.GlobalRequestControllerHandler|handleRequest |GlobalRequestControllerHandler| 68| |io.undertow.server.handlers.PredicateHandler |handleRequest |PredicateHandler.java | 43| |io.undertow.servlet.handlers.ServletInitialHandler |handleFirstRequest |ServletInitialHandler.java | 292| |io.undertow.servlet.handlers.ServletInitialHandler |access$100 |ServletInitialHandler.java | 81| |o.undertow.servlet.handlers.ServletInitialHandler$2|call |ServletInitialHandler.java | 138| |o.undertow.servlet.handlers.ServletInitialHandler$2|call |ServletInitialHandler.java | 135| |rvlet.core.ServletRequestContextThreadSetupAction$1|call |ServletRequestContextThreadSet| 48| |dertow.servlet.core.ContextClassLoaderSetupAction$1|call |ContextClassLoaderSetupAction.| 43| |.undertow.security.SecurityContextThreadSetupAction|lambda$create$0 |SecurityContextThreadSetupActi| 105| |rityContextThreadSetupAction$$Lambda$894/1513958645|call | | | |rtowDeploymentInfoService$UndertowThreadSetupAction|lambda$create$0 |UndertowDeploymentInfoService.|1508| |ce$UndertowThreadSetupAction$$Lambda$895/1566937656|call | | | |rtowDeploymentInfoService$UndertowThreadSetupAction|lambda$create$0 |UndertowDeploymentInfoService.|1508| |ce$UndertowThreadSetupAction$$Lambda$895/1566937656|call | | | |rtowDeploymentInfoService$UndertowThreadSetupAction|lambda$create$0 |UndertowDeploymentInfoService.|1508| |ce$UndertowThreadSetupAction$$Lambda$895/1566937656|call | | | |rtowDeploymentInfoService$UndertowThreadSetupAction|lambda$create$0 |UndertowDeploymentInfoService.|1508| |ce$UndertowThreadSetupAction$$Lambda$895/1566937656|call | | | |io.undertow.servlet.handlers.ServletInitialHandler |dispatchRequest |ServletInitialHandler.java | 272| |io.undertow.servlet.handlers.ServletInitialHandler |access$000 |ServletInitialHandler.java | 81| |o.undertow.servlet.handlers.ServletInitialHandler$1|handleRequest |ServletInitialHandler.java | 104| |io.undertow.server.Connectors |executeRootHandler |Connectors.java | 326| |io.undertow.server.HttpServerExchange$1 |run |HttpServerExchange.java | 812| |java.util.concurrent.ThreadPoolExecutor |runWorker |ThreadPoolExecutor.java |1142| |java.util.concurrent.ThreadPoolExecutor$Worker |run |ThreadPoolExecutor.java | 617| |java.lang.Thread |run |Thread.java | 745| +----------------------------------------------------------------------------------------------------------------------+"} -- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to orbeon+unsubscribe@googlegroups.com. To post to this group, send email to orbeon@googlegroups.com. |
Administrator
|
Hi Brian,
I couldn't find anything in specs saying that sending a `Content-Type: none` for GET requests is invalid, but it certainly isn't very helpful, and browsers don't do that, so I don't think we should either. For now I've created the issue linked below, and we'll hopefully get a chance to take care of it soon. https://github.com/orbeon/orbeon-forms/issues/3680 Alex ----- -- Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet -- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email].
--
Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet |
Hi Alex,
I think it does violate the spec (rfc7231) as the definition of content-type is Content-Type = media-type and for media-type we have this media-type = type "/" subtype *( OWS ";" OWS parameter ) type = token subtype = token there is no "/" in "none" so this content-type header probably cannot be parsed which is where we see an error. The parser should probably be more forgiving but in this case it is not (RestEasy on Wildfly, error "RESTEASY003340: Failure parsing MediaType string: none") This is not a major issue (the cookie problem is) but it does break using the "test" button on the service dialog. thanks brian... -- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email]. |
Administrator
|
Good point Brian, I've added a note to the issue about this, and we should
definitely take care of this. Alex ----- -- Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet -- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email].
--
Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet |
Administrator
|
Hi Brian,
I am trying to reproduce this, and somehow don't see a `Content-Type: none` sent for GET requests. I've created a form in Form Builder, added a service that calls http://httpbin.org/xml and look at the request issued while I'm hitting the Test button. I am seeing the following headers sent: <http://discuss.orbeon.com/file/t119778/Headers_for_GET.png> Are you seeing something different when following the steps I mentioned? If you are not, but are getting the `Content-Type: none` in another case, how can I reproduce that case? Alex ----- -- Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet -- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email].
--
Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet |
This post was updated on .
Hi Alex,
How are you observing the request? I just tried with the httpbin url and still see a Content-Type: none in the request. I'm observing the request contents using wireshark. I've also tried turning on debug level in the orbeon server for org.apache.http and I see this in the log (trying a 'raw' text section below, if it doesn't work I'll edit the post and put it back) 07:48:00,095 DEBUG [org.apache.http.wire] (default task-16) >> "GET /xml HTTP/1.1[\r][\n]" 07:48:00,095 DEBUG [org.apache.http.wire] (default task-16) >> "Content-Type: none[\r][\n]" 07:48:00,095 DEBUG [org.apache.http.wire] (default task-16) >> "Cookie: JSESSIONIDSSO=hv0iEJWkx6A3eGVcT5LRUoZq3drRk-Yi0rRS5sra[\r][\n]" 07:48:00,095 DEBUG [org.apache.http.wire] (default task-16) >> "Orbeon-Token: d5c3aeedd4f8b369f01017827a11e64534761286[\r][\n]" 07:48:00,095 DEBUG [org.apache.http.wire] (default task-16) >> "Host: httpbin.org[\r][\n]" 07:48:00,095 DEBUG [org.apache.http.wire] (default task-16) >> "Connection: Keep-Alive[\r][\n]" 07:48:00,095 DEBUG [org.apache.http.wire] (default task-16) >> "Accept-Encoding: gzip,deflate[\r][\n]" 07:48:00,095 DEBUG [org.apache.http.wire] (default task-16) >> "[\r][\n]" 07:48:00,095 DEBUG [org.apache.http.headers] (default task-16) >> GET /xml HTTP/1.1 07:48:00,095 DEBUG [org.apache.http.headers] (default task-16) >> Content-Type: none 07:48:00,095 DEBUG [org.apache.http.headers] (default task-16) >> Cookie: JSESSIONIDSSO=hv0iEJWkx6A3eGVcT5LRUoZq3drRk-Yi0rRS5sra 07:48:00,095 DEBUG [org.apache.http.headers] (default task-16) >> Orbeon-Token: d5c3aeedd4f8b369f01017827a11e64534761286 07:48:00,095 DEBUG [org.apache.http.headers] (default task-16) >> Host: httpbin.org 07:48:00,095 DEBUG [org.apache.http.headers] (default task-16) >> Connection: Keep-Alive 07:48:00,095 DEBUG [org.apache.http.headers] (default task-16) >> Accept-Encoding: gzip,deflate 07:48:00,412 DEBUG [org.apache.http.wire] (default task-16) << "HTTP/1.1 200 OK[\r][\n]" 07:48:00,412 DEBUG [org.apache.http.wire] (default task-16) << "Connection: keep-alive[\r][\n]" 07:48:00,413 DEBUG [org.apache.http.wire] (default task-16) << "Server: gunicorn/19.9.0[\r][\n]" 07:48:00,413 DEBUG [org.apache.http.wire] (default task-16) << "Date: Thu, 23 Aug 2018 21:47:58 GMT[\r][\n]" 07:48:00,413 DEBUG [org.apache.http.wire] (default task-16) << "Content-Type: application/xml[\r][\n]" 07:48:00,413 DEBUG [org.apache.http.wire] (default task-16) << "Content-Length: 522[\r][\n]" 07:48:00,413 DEBUG [org.apache.http.wire] (default task-16) << "Access-Control-Allow-Origin: *[\r][\n]" 07:48:00,413 DEBUG [org.apache.http.wire] (default task-16) << "Access-Control-Allow-Credentials: true[\r][\n]" 07:48:00,413 DEBUG [org.apache.http.wire] (default task-16) << "Via: 1.1 vegur[\r][\n]" 07:48:00,413 DEBUG [org.apache.http.wire] (default task-16) << "[\r][\n]" 07:48:00,413 DEBUG [org.apache.http.impl.conn.DefaultClientConnection] (default task-16) Receiving response: HTTP/1.1 200 OK 07:48:00,413 DEBUG [org.apache.http.headers] (default task-16) << HTTP/1.1 200 OK 07:48:00,413 DEBUG [org.apache.http.headers] (default task-16) << Connection: keep-alive 07:48:00,413 DEBUG [org.apache.http.headers] (default task-16) << Server: gunicorn/19.9.0 07:48:00,413 DEBUG [org.apache.http.headers] (default task-16) << Date: Thu, 23 Aug 2018 21:47:58 GMT 07:48:00,413 DEBUG [org.apache.http.headers] (default task-16) << Content-Type: application/xml 07:48:00,413 DEBUG [org.apache.http.headers] (default task-16) << Content-Length: 522 07:48:00,413 DEBUG [org.apache.http.headers] (default task-16) << Access-Control-Allow-Origin: * 07:48:00,413 DEBUG [org.apache.http.headers] (default task-16) << Access-Control-Allow-Credentials: true 07:48:00,413 DEBUG [org.apache.http.headers] (default task-16) << Via: 1.1 vegur -- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to orbeon+unsubscribe@googlegroups.com. To post to this group, send email to orbeon@googlegroups.com. |
Administrator
|
Hi Brian,
Here, I'm setting the following 2 properties, and have Charles running as a proxy on port 8888. What version are seeing this with? Is it 2017.2.2? I was using our latest code, not that I'm aware of anything having changed with that, but you never know. <property as="xs:string" name="oxf.http.proxy.host" value="localhost"/> <property as="xs:integer" name="oxf.http.proxy.port" value="8888"/> Alex ----- -- Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet -- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email].
--
Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet |
Hi Alex, I'm seeing this with 2018.1.201808012219 PE
-- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email]. |
Administrator
|
Hi Brian,
OK, so we're pretty much using the same code. But let's make sure we have exactly the same version, and follow the same procedure. Could you try the following: 1. Download and deploy this build: https://s3.amazonaws.com/orbeon-builds/orbeon/orbeon-forms-pe/2236/2236.2/build/distrib/orbeon-2018.1.201808291755-PE.zip 2. Load http://localhost:8080/orbeon/fr/orbeon/builder/new, enter a/a for app/form name. 3. Create a new action, enter http://httpbin.org/xml as the URL, hit Test. With this, I get: <http://discuss.orbeon.com/file/t119778/wireshark.png> I am not seeing any `Content-Type: none`. Are you getting a different result if you follow the above steps? Alex ----- -- Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet -- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email].
--
Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet |
Hi Alex,
Are we talking about the same thing. The Content-Type: none is the first header in the wireshark image you posted. It is that header that causes the problem. I tried the same scenario with the version of orbeon you linked and see the same thing, this is what I get from wireshark: <http://discuss.orbeon.com/file/t375137/wiresharkimage.jpg> -- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email]. |
Administrator
|
Hi Brian,
Scary, talk about confirmation bias! I imagine that I must have been so convinced that the header wasn't there, that I didn't see it in my own screenshot. There was a bug specifically with the HTTP Service Editor dialog. From what I can see, this issue doesn't (and didn't) happen when the service was running when the form is published, but let me know if I'm overlooking something there. So the issue is fixed, and the fix will be in 2018.1. I've put again the link to the issue below for reference. https://github.com/orbeon/orbeon-forms/issues/3680 Alex ----- -- Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet -- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email].
--
Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet |
Ever seen a '70s file called The Andromeda Strain?
It is so easy to look at something and not see it, I do it all the time in software work. I find trying to explain it to someone else often makes me see what I couldn't see before. Even if the someone else is a blow up dummy, doesn't need to be someone real :-) Thanks for fixing that. It wasn't a show stopper but a real nuisance for our user's who design and test forms. brian... -- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email]. |
Administrator
|
Brian, I haven't read The Andromeda Strain, but it sounds like I should! And
I'm glad we took care of this one. Those "paper cut" issues, which often have something to do with the UI, are really important too. Alex ----- -- Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet -- Sent from: http://discuss.orbeon.com/ -- You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email].
--
Follow Orbeon on Twitter: @orbeon Follow me on Twitter: @avernet |
Free forum by Nabble | Edit this page |