无法从单选按钮检索值(returns NULL)

Not able to retrieve value from radiobutton (returns NULL)

我有几个单选按钮,我需要检索它们的值以过滤一些搜索结果。但问题是我似乎只从操作中的 valueRadio 对象中获得 'NULL' 值 return。

我是什么missing/overlooking?如果您需要更多信息,请告诉我。


.JSP 页面

...
<c:set var="filter" value="${PageData.fields.filter}" />
<html-el:form action="/myResultPage" styleId="myResultPage-form" method="get">
    ...
    <div class="form-block floatstop">
        <html-el:radio property="field(filter.correct)" value="1"/>
        <label>Show only correct results</label>
        <br><br>
        <html-el:radio property="field(filter.correct)" value=""/>
       <label>Show only incorrect results</label>                                           
    </div>
    ...
    <div class="floatstop">
    <p class="formbuttonwrapper left">
        <span class="left" style="margin-left: 10px;">
            <em class="block left">
                <html-el:button property="event(filterResults)" styleId="searchButton" styleClass="pointer formbuttonwrapper greenButton">Search</html-el:button>
             </em>
        </span>
     </p>
    ...
   </div>
   ...
</html-el:form>
...

Javascript

...    
function addSearchClickListener()
{
    $("#searchButton").click(function()
    {
        if($('#myResultPage-form').valid())
        {
            var values =
            {   
                'someValue' : $("#someValue").val(),
                ... //retrieving all values to be shown in the list          
            }
            $.ajax({
                url: contextPath + "/myResultPage.do",
                type: "get",
                cache: false,
                data: 
                {
                    "event(filterResults)": "",
                    "field(fieldsJSON)": JSON.stringify(values)
                },
                success: function(data, status, request)
                {
                    //create list of results
                    //show list
                },
                error: function(data) 
                {
                    ...
                }
            });
        }
    });
};
...

动作

public ActionForward onGetFilterResults(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
            throws Exception {
    ...
    PageData inForm = ActionUtils.getInputForm(mapping, request, form);
    String fieldsJSON = (String)inForm.getField("fieldsJSON");
    Map<String,Object> fields = (Map<String,Object>)(new JSONReader()).read(fieldsJSON);
    ResultVo resultVo = new ResultVo();
    ...
    Object valueRadio = fields.get("correct");
    if(valueRadio != null && ((String)valueRadio).length() != 0)
    {
        if(Integer.parseInt((String)valueRadio ) == 1)
        {
            resultVo.setResult_incorrect(0); //0 = correct values, 1 = incorrect values
        }
        else
        {
            resultVo.setResult_incorrect(1);
        }
    }
    else
    {
         resultVo.setResult_incorrect(1);
    }
   ...
}

在调试日志中,无论选择哪个按钮,以下都是 return 'NULL'。

    LOGGER.debug("valueRadio : " + valueRadio );
    LOGGER.debug("get fields: " + fields.get("correct"));
    LOGGER.debug("get fields: " + fields.get("filter.correct"));
    LOGGER.debug("get field: " + inForm.getField("correct"));
    LOGGER.debug("get field: " + inForm.getField("filter.correct"));
    LOGGER.debug("request parameter: " + request.getParameter("correct"));
    LOGGER.debug("request parameter: " + request.getParameter("filter.correct"));
    LOGGER.debug("request paramValues: " + request.paramValues("correct"));
    LOGGER.debug("request paramValues: " + request.paramValues("filter.correct"));

我也试过这样处理单选按钮:

("correct[0]") & ("correct[1]")

编辑

单选按钮曾经是 1 个复选框(选中时显示正确结果的列表)。然后 valueRadio 对象被命名为 valueCheckbox 并且 fields.get("correct") 在复选框被选中时做了 return 1

这是复选框:

...
<div class="form-block floatstop">
    <html-el:checkbox property="field(filter.correct)" styleId="correct" value="1"/>
    <label>Show only correct results</label>
</div>
...

原来这是一个愚蠢的错误,我没有注意到我忘记了 styleId<html-el:form/> 中的输入字段由 JavaScript 寻址。

styleId="correct" 添加到单选按钮后 fields.get("correct") returns 1 当单选按钮被选中时,这是应该的。

<html-el:radio property="field(filter.correct)" styleId="correct" value="1"/>

我还没有尝试将 styleId="correct" 添加到两个单选按钮,因为对于此应用程序,只需要其中一个按钮的值。