Подавить пустые параметры с помощью тега param

Я написал JSP, который я использовал со многими действиями. Имеет ссылку с параметрами

Ссылка:

<s:a namespace="/some" action="view">
  <s:param name="purpose" value="%{purpose}"/>
  <s:param name="type" value="%{type}"/>
  <s:property value="%{name}"/>
</s:a>

Класс действий:

public class ViewAction extends ActionSupport {

  private Long purpose;
  private Long type;
  private String name;

  public Long getPurpose() {
    return purpose;
  }

  public void setPurpose(Long purpose) {
    this.purpose = purpose;
  }

  public Long getType() {
    return type;
  }

  public void setType(Long type) {
    this.type = type;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

Обычно я инициализирую оба параметра, но иногда один параметрnull, Таким образом, ссылка создается сhref лайк

/context/some/view?purpose=1&type=

но я хочу удалить&type=

Я попробовал пример изParam Примеры.

<s:a namespace="/some" action="view">
  <s:param name="purpose" value="%{purpose}"/>
  <s:param name="type" value="%{type}"/>
  <s:property value="%{name}"/>
  <s:param name="suppressEmptyParameters" value="true"/>
</s:a>

но это не сработало

Я тоже пробовал

<s:a namespace="/some" action="view">
  <s:param name="purpose" value="%{purpose}"/>
  <s:param name="type" value="%{type}" suppressEmptyParameters="true"/>
  <s:property value="%{name}"/>
</s:a>

и я получил

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
    at org.apache.struts2.components.Param.end(Param.java:129)
    at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)

Как решить эту проблему?

Ответы на вопрос(1)

Ваш ответ на вопрос