使用Struts2和Dojo将选定值从选择标记传递给操作

时间:2012-06-07 19:52:22

标签: ajax struts2 dojo

我正在尝试在触发onchange事件时通过ajax将select标签的选定值传递给action,但由于某种原因,该操作会将参数作为null接收。

以下是jsp的代码:

<%@taglib prefix="s" uri="/struts-tags" %>
<%@taglib prefix="sx" uri="/struts-dojo-tags" %>
<div id="navegacion_proyectos">
    <s:select name="id_proyecto_actual" id="proyecto_actual_select" list="proyectos" listValue="titulo_proyecto" listKey="id_proyecto"/>
    <s:url id="cambiar_proyecto_actual_url" value="/cambiar_proyecto_actual.action" />
    <sx:bind sources="proyecto_actual_select" events="onchange" href="%{cambiar_proyecto_actual_url}" />
</div>

这是行动的代码:

public class BLProyecto extends ActionSupport {

    private String id_proyecto_actual;

    public String cambiarProyectoActual() {

        Map sesion = ActionContext.getContext().getSession();
        sesion.put("proyecto_actual", id_proyecto_actual);

        return SUCCESS;
    }
    public String getId_proyecto_actual() {
        return id_proyecto_actual;
    }

    public void setId_proyecto_actual(String id_proyecto_actual) {
        this.id_proyecto_actual = id_proyecto_actual;
    }

}

我正在重新编译代码,而id_proyecto_actual参数显示为null。您认为这是什么问题?

1 个答案:

答案 0 :(得分:1)

谢谢大家,我找到了答案。触发事件时,我只需提交表单,而不是关注网址。像这样:

<%@taglib prefix="s" uri="/struts-tags" %>
<%@taglib prefix="sx" uri="/struts-dojo-tags" %>
<div id="navegacion_proyectos">
    <s:form id="cambiar_proyecto_actual_form" action="cambiar_proyecto_actual">
        <s:select name="id_proyecto_actual" id="proyecto_actual_select" list="proyectos" listValue="titulo_proyecto" listKey="id_proyecto"/>
    </s:form>
    <sx:bind sources="proyecto_actual_select" formId="cambiar_proyecto_actual_form" targets="pantalla_principal" events="onchange" />
</div>