Yes that seems to be the problem. But I have many applications working on older struts 2 libraries and the dmi + javascript validation worked.
On Sunday, September 22, 2013, JOSE L MARTINEZ-AVIAL <jlm...@gmail.com> wrote: > Maybe it is not able to match the action name in the form (with the !login) with the action definition? I would take a look at the source to see how the match is done. > > > 2013/9/22 Néstor Boscán <nesto...@gmail.com> >> >> Yes I reenabled DMI but javascript validation is not working when using DMI. If you use action!method the javascript field validations won't appear. >> >> On Sun, Sep 22, 2013 at 2:47 AM, Chris Pratt <thechrispr...@gmail.com> wrote: >>> >>> I believe one of the recent changes was to change the default to disabling >>> DMI, but you can re-enable it if you understand the risks. >>> (*Chris*) >>> >>> >>> On Sat, Sep 21, 2013 at 6:20 PM, Néstor Boscán <nesto...@gmail.com> wrote: >>> >>> > Hi >>> > >>> > <s:form name="login" method="post" action="login!login.action" >>> > validate="true"> >>> > <s:hidden name="request_id" value="%{#parameters.request_id}"/> >>> > <s:textfield name="username" key="username" size="25" >>> > cssClass="mystyle1"/> >>> > <s:password name="password" key="password" size="25" >>> > cssClass="mystyle1"/> >>> > </s:form> >>> > >>> > It looks like this version of Struts 2 doesn't like the Dynamic Method >>> > Invocation in login!login.action. If I don't use DMI it works. Older >>> > versions of the framework worked with DMI. >>> > >>> > Regards, >>> > >>> > Néstor >>> > >>> > >>> > On Sat, Sep 21, 2013 at 5:24 PM, <jlm...@gmail.com> wrote: >>> > >>> > > Can you provide the jsp snipset for the form? >>> > > Sent via BlackBerry from T-Mobile >>> > > >>> > > -----Original Message----- >>> > > From: Néstor Boscán <nesto...@gmail.com> >>> > > Date: Sat, 21 Sep 2013 16:15:23 >>> > > To: Struts Users Mailing List<user@struts.apache.org> >>> > > Reply-To: "Struts Users Mailing List" <user@struts.apache.org> >>> > > Subject: S2: Not generating javascript validation >>> > > >>> > > Hi >>> > > >>> > > I'm using the latest 2.3.15.2 version of struts 2 on weblogic 10.3.6. >>> > This >>> > > are my files: >>> > > >>> > > LoginAction-validation.xml: >>> > > >>> > > <!DOCTYPE validators PUBLIC >>> > > "-//Apache Struts//XWork Validator 1.0.3//EN" >>> > > "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> >>> > > <validators> >>> > > <field name="username"> >>> > > <field-validator type="required"> >>> > > <message>El usuario es requerido</message> >>> > > </field-validator> >>> > > </field> >>> > > <field name="password"> >>> > > <field-validator type="required"> >>> > > <message>La contrasenia es requerida</message> >>> > > </field-validator> >>> > > </field> >>> > > </validators> >>> > > >>> > > validators.xml: >>> > > >>> > > <?xml version="1.0" encoding="UTF-8"?> >>> > > <!DOCTYPE validators PUBLIC >>> > > "-//Apache Struts//XWork Validator Definition 1.0//EN" >>> > > " >>> > http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd >>> > > "> >>> > > <validators> >>> > > <validator name="required" >>> > > >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/> >>> > > <validator name="requiredstring" >>> > > >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/> >>> > > <validator name="int" >>> > > >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/> >>> > > <validator name="long" >>> > > >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/> >>> > > <validator name="short" >>> > > >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/> >>> > > <validator name="double" >>> > > >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/> >>> > > <validator name="date" >>> > > >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/> >>> > > <validator name="expression" >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/> >>> > > <validator name="fieldexpression" >>> > > >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/> >>> > > <validator name="email" >>> > > class="com.opensymphony.xwork2.validator.validators.EmailValidator"/> >>> > > <validator name="url" >>> > > class="com.opensymphony.xwork2.validator.validators.URLValidator"/> >>> > > <validator name="visitor" >>> > > >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/> >>> > > <validator name="conversion" >>> > > >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/> >>> > > <validator name="stringlength" >>> > > >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/> >>> > > <validator name="regex" >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/> >>> > > <validator name="conditionalvisitor" >>> > > >>> > > >>> > class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/> >>> > > </validators> >>> > > >>> > > The form tag has validate="true". >>> > > >>> > > When I generate the login page I get: >>> > > >>> > > <script type="text/javascript"> >>> > > function validateForm_login() { >>> > > var getFieldValue = function(field) { >>> > > var type = field.type ? field.type : field[0].type; >>> > > if (type == 'select-one' || type == 'select-multiple') { >>> > > return (field.selectedIndex == -1 ? "" : >>> > > field.options[field.selectedIndex].value); >>> > > } else if (type == 'checkbox' || type == 'radio') { >>> > > if (!field.length) { >>> > > field = [field]; >>> > > } >>> > > for (var i = 0; i < field.length; i++) { >>> > > if (field[i].checked) { >>> > > return field[i].value; >>> > > } >>> > > } >>> > > return ""; >>> > > } >>> > > return field.value; >>> > > } >>> > > form = document.getElementById("login"); >>> > > clearErrorMessages(form); >>> > > clearErrorLabels(form); >>> > > >>> > > var errors = false; >>> > > var continueValidation = true; >>> > > >>> > > return !errors; >>> > > } >>> > > </script> >>> > > >>> > > It's like the validation framework is not detecting the fields. >>> > > >>> > > Regards, >>> > > >>> > > Nestor Boscan >>> > > >>> > > >>> > >> > >