struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rainer Hermanns (JIRA)" <j...@apache.org>
Subject [jira] Commented: (WW-2690) CLONE -Autocomplenter don't submit the attribute value to the url action when use valueNotifyTopics.
Date Mon, 23 Jun 2008 12:52:05 GMT

    [ https://issues.apache.org/struts/browse/WW-2690?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=44280#action_44280
] 

Rainer Hermanns commented on WW-2690:
-------------------------------------

Wilson,
we all are volunteers, not paid people, working in our spare time on Struts2.
So none of us is "supposed to do that"...
But you might want to consider to pay for our consultancy hours, then you decide what gets
done.

So, if you want someone to help you, choose your words more wisely...
And, while we are at it... If you know how to fix the issue, why not provide a patch for it...
That's what OpenSource software development is about...

cheers,
Rainer

> CLONE -Autocomplenter 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
>             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 scoweb.app.model.CondicaoPagamento@ed21d3
[java.lang.NoSuchMethodException: setId([Ljava.lang.String;)]
> ....
> expr: proposta.condicaoPagamento.id val: [Ljava.lang.String;@1d1cd0d context: ognl.OgnlContext@99c60f88
root:[scoweb.app.action.PropostaAction@2a590d, com.opensymphony.xwork2.DefaultTextProvider@117ae94]
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.


Mime
View raw message