我有几个radiobuttons,我需要检索该值以过滤一些搜索结果。但问题是我似乎只从动作中的valueRadio
对象返回'NULL'值。
我缺少/忽视的是什么?如果您需要更多信息,请与我们联系。
.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);
}
...
}
在调试日志中,无论选择哪个按钮,以下都返回'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]")
radiobuttons曾经是1复选框(显示选中时正确结果的列表)。我们将valueRadio
对象命名为valueCheckbox
,fields.get("correct")
在选中复选框后返回1
。
这是复选框:
...
<div class="form-block floatstop">
<html-el:checkbox property="field(filter.correct)" styleId="correct" value="1"/>
<label>Show only correct results</label>
</div>
...
答案 0 :(得分:0)
原来这是一个愚蠢的错误,我没有注意到我忘记了styleId
,<html-el:form/>
内的输入字段被JavaScript注释。
当styleId="correct"
添加到单选按钮时,fields.get("correct")
会在选中单选按钮时返回1,应该如此。
<html-el:radio property="field(filter.correct)" styleId="correct" value="1"/>
我还没有尝试将styleId="correct"
添加到两个单选按钮,因为此应用程序只需要1个按钮的值。