[
https://issues.apache.org/struts/browse/WW-2690?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=44281#action_44281
]
Wilson M Penha Jr. commented on WW-2690:
----------------------------------------
I apologize you all for that, I was a little nervous in that moment.
It won't happen again.
Regards
Wilson.
> CLONE -Autocompleter don't submit the attribute value to the url action when
> use valueNotifyTopics.
> ---------------------------------------------------------------------------------------------------
>
> Key: WW-2690
> URL: https://issues.apache.org/struts/browse/WW-2690
> Project: Struts 2
> Issue Type: Bug
> Components: Plugin - Dojo Tags
> Affects Versions: 2.1.0, 2.1.1, 2.1.2
> Environment: Windows Server 2003, JDK1.5.0.11, Tomcat5.5.25, IE 7 &
> Firefox2
> Reporter: Wilson M Penha Jr.
> Assignee: Musachy Barroso
> Priority: Minor
> Fix For: 2.1.3
>
>
> TEST CASE INSERTED!
> Hi Musachy Barroso,
> Let me send you the test case, so you can see it happens with you.
> 1o. Build a simple Pojo class into "org.apache.struts2.showcase.ajax" package:
> package org.apache.struts2.showcase.ajax;
> public class Pojo {
> private Long Id;
> public Long getId() {
> return Id;
> }
> public void setId(Long id) {
> Id = id;
> }
> }
> 2o. Than put a pojo attribute into the
> "org.apache.struts2.showcase.ajax.AutocompleterExampleAction.java";
> public class AutocompleterExampleAction extends ActionSupport {
> private String select;
> private List<String> options = new ArrayList<String>();
> private Pojo pojo; // Pojo to reproduce the issue for the AutoCompleter bug.
> :
> :
> :
> }
> 3o. Than from the WebContent/ajax/index.jsp file, put a <s:textfield...> into
> the "selectForm" form tag, this will work with the colors, fruit example;
> Link two autocompleter elements. When the selected value in 'Autocompleter 1'
> changes, the available values in 'Autocompleter 2' will change also.
> <br/>
> <form id="selectForm">
> <s:textfield theme="simple" id="id" name="pojo.id" cssStyle="display:none"/>
> <!-- This is for reproduce the issue -->
> 4o. Than run the server in debug mode, and place a breakpoint into the
> execute method into the action class;
> public String execute() throws Exception {
> if ("fruits".equals(select)) { // put here a debug breakpoint
> options.add("apple");
> 5o. Than run rebuild the showcase project and run it in debug mode.
> 6o. Go the "Ajax plugin for Struts"->"Autocompleter combobox tag ".
> In this very moment the app will hang in the breakpoint, than look at
> the Variables tabs from Debug perspective and colapse the "this" object,
> you will see the value of the "select" attribute as null, then no
> matter you try from the Autocompleter 1 field, been a colors or fruits, if
> you change it
> you will see the same thing into the debug.
> That is the issue you need to fix, and it also happens for kind of
> <sx:autocompleter implementation../> regarding silence submit by <s:url.../>
> Conclusion:
> I can make it works, but the fix for one thing will produce more issues, see
> that:
> 1o. first change the <s:textfield.../> with "pojo.id" to <input type="hidden"
> name="pojo.id"> into the index.jsp, than put the @SkipValidation anotation
> right above the execute method from the action class
> "AutocompleterExampleAction", build the project and run it again. You will
> able to see it working, however this kind of fix, can build others issue for
> not doing the validation.
> Think about it, now you have what you ask, and I think it is very enough to
> fix the bug.
> I could done this, but I am very busy with my project and can't go deep into
> this Dojo stuff.
> Thanks and regards.
> ORIGINAL ISSUE!
> I got three days running on this issue, and now I could identify what happens
> and when, but I could not say why?
> I'm doing one app with Struts2.1.x, Spring2.5.x, Hibernate3.
> I've been trying to run a autocompleter with valueNotifyTopics to another
> component such as <s:div and/or <s:autocompleter.
> See my code:
> .jsp
> <form id="formEditar">
> <s:textfield theme="simple" id="id" name="proposta.id"
> cssStyle="display:none"/>
> <sx:autocompleter
> id="condicaoPagamentoId" name="proposta.condicaoPagamento.id"
> list="condicaoPagamentoList" keyName="proposta.condicaoPagamento.id"
> listKey="id"
> listValue="descricao"
> valueNotifyTopics="/condicaodepagamento"
> forceValidOption="true" />
> <s:url var="getParcelas" namespace="/proposta" action="gerarParcelas">
> </s:url>
> <sx:div id="divParcelas" href="%{#getParcelas}"
> listenTopics="/condicaodepagamento" formId="formEditar" autoStart="true">
> </sx:div>
> </form>
> struts.xml
> <package name="proposta" extends="struts2" namespace="/proposta">
> <action name="gerarParcelas" class="propostaAction" method="gerarParcelas">
> <interceptor-ref name="defaultStack">
> <param name="validation.excludeMethods">gerarParcelas</param>
> </interceptor-ref>
> <result>/WEB-INF/jsp/proposta/parcelas.jsp</result>
> </action>
> </package>
> Behave 1 at IE7:
> When I open my jsp it isn't sending the value for
> "proposta.condicaoPagamento.id" to my action, it appears as null, causing an
> error.
> Behave 2 at IE7:
> I changed the "proposta.id" attribute to be set with <input type="hidden"...>
> instead <s:textfield...>, so when I open my jsp I got another exception
> before it reach the action, is was:
> java.lang.NumberFormatException: For input string:
> "[Ljava.lang.String;@1d1cd0d"
> at java.lang.NumberFormatException.forInputString(Unknown Source)
> at java.lang.Long.parseLong(Unknown Source)
> at java.lang.Long.parseLong(Unknown Source)
> .....
> ognl.MethodFailedException: Method "setId" failed for object [EMAIL
> PROTECTED] [java.lang.NoSuchMethodException: setId([Ljava.lang.String;)]
> ....
> expr: proposta.condicaoPagamento.id val: [Ljava.lang.String;@1d1cd0d context:
> [EMAIL PROTECTED] root:[EMAIL PROTECTED], [EMAIL PROTECTED] value:
> [Ljava.lang.String;@1d1cd0d
> 2008-06-07 12:29:30,234 ERROR
> (com.opensymphony.xwork2.interceptor.ParametersInterceptor:24) -
> ParametersInterceptor - [setParameters]: Unexpected Exception caught setting
> 'proposta.condicaoPagamento.id' on 'class scoweb.app.action.PropostaAction:
> Error setting expression 'proposta.condicaoPagamento.id' with value
> '[Ljava.lang.String;@1d1cd0d'
> 2008-06-07 12:29:30,515 ERROR (org.apache.struts2.dispatcher.Dispatcher:28) -
> Could not find action or result
> No result defined for action scoweb.app.action.PropostaAction and result input
> at
> com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:357)
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:259)
> .............
> The attribute type for Id is set to Long
> private Long Id;
> setId(Long id)...
> Long getId()...
> Behave 3 at Firefox:
> For both cases it's show the same as Behave 2 does.
> I tried to change the attributes from the autocompleter to do like the
> showcase example, see what happens:
> .jsp
> <s:textfield theme="simple" id="id" name="proposta.id"
> cssStyle="display:none"/>
> <sx:autocompleter
> name="select"
> list="{'fruits','colors'}"
> value="colors"
> valueNotifyTopics="/condicaodepagamento"
> forceValidOption="true" />
> <s:url var="getParcelas" namespace="/proposta" action="gerarParcelas">
> </s:url>
> <sx:div id="divParcelas" href="%{#getParcelas}"
> listenTopics="/condicaodepagamento" formId="formEditar" autoStart="true">
> </sx:div>
> Behave 1 at IE7
> The attribute "select" appears as null into the action
> Behave 2 at IE7:
> I changed the "proposta.id" attribute to be set with <input type="hidden"...>
> instead <s:textfield...>, so when I open my jsp the "select" attribute was
> right populated.
> Behave 3 at Firefox2.
> In both cases the attribute "select" was filled by the action.
> Now I'm stuck on that and asking for help for you guys.
> NOTE: If just use a <s:select...> component instead <s:autocompleter...> to
> select the "proposta.condicaoPagamento.id" and ignoring the <s:div...> thing,
> it just work as should.
> Thanks and regards,
> Wilson M. Penha Jr.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.