*
* @param value the ActionLink value parameter
* @return the ActionLink HTML href attribute
*/
public String getHref(Object value) {
Context context = getContext();
String uri = ClickUtils.getRequestURI(context.getRequest());
HtmlStringBuffer buffer =
new HtmlStringBuffer(uri.length() + getName().length() + 40);
buffer.append(uri);
buffer.append("?");
buffer.append(ACTION_LINK);
buffer.append("=");
buffer.append(getName());
if (value != null) {
buffer.append("&");
buffer.append(VALUE);
buffer.append("=");
buffer.append(ClickUtils.encodeUrl(value, context));
}
if (hasParameters()) {
for (String paramName : getParameters().keySet()) {
if (!paramName.equals(ACTION_LINK) && !paramName.equals(VALUE)) {
Object paramValue = getParameters().get(paramName);
// Check for multivalued parameter
if (paramValue instanceof String[]) {
String[] paramValues = (String[]) paramValue;
for (int j = 0; j < paramValues.length; j++) {
buffer.append("&");
buffer.append(paramName);
buffer.append("=");
buffer.append(ClickUtils.encodeUrl(paramValues[j],
context));
}
} else {
if (paramValue != null) {
buffer.append("&");
buffer.append(paramName);
buffer.append("=");
buffer.append(ClickUtils.encodeUrl(paramValue,
context));
}
}
}
}
}
return context.getResponse().encodeURL(buffer.toString());
}