Yes, that was broken and was fixed in 2.1 to:
protected boolean isAccepted(String paramName) {
if (!this.acceptParams.isEmpty()) {
for (Pattern pattern : acceptParams) {
Matcher matcher = pattern.matcher(paramName);
if (matcher.matches()) {
return true;
}
}
}
return acceptedPattern.matcher(paramName).matches();
}
as a workaround, you can use a regex that matches all the values:
(id|anotherid)
musachy
On Mon, Feb 9, 2009 at 11:04 AM, Torsten Krah
tk...@fachschaft.imn.htwk-leipzig.de wrote:
I wonder if someone faced this behavior before, wheter this is known or
wanted.
XWork ParametersInterceptor Code:
protected boolean isAccepted(String paramName) {
if (!this.acceptedParams.isEmpty()) {
for (Pattern pattern : acceptedParams) {
Matcher matcher = pattern.matcher(paramName);
if (!matcher.matches()) {
return false;
}
}
}
return acceptedPattern.matcher(paramName).matches();
}
Taking a param list like id, anotherid which are both accepted and
configured in my interceptor stack.
But using the Code above, none of them will ever be accepted, because the
pattern list is traversed and matched against the actual parameter.
first run: id matches id - OK
second run: anotherid does not match id - FALSE
Although the Pattern list does contain a pattern which may result in a true
match, false will be returned if there are more than 2 patterns in the list
(order doesnt matter).
My parameter is not set.
Is this indented behavior? Or something wrong here?
thx
Torsten
PS: Using struts 2.0.11.x, XWork 2.0.5
--
Bitte senden Sie mir keine Word- oder PowerPoint-Anhänge.
Siehe http://www.gnu.org/philosophy/no-word-attachments.de.html
Really, I'm not out to destroy Microsoft. That will just be a
completely unintentional side effect.
-- Linus Torvalds
--
Hey you! Would you help me to carry the stone? Pink Floyd
-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org