在Jersey REST中,如何根据另一个FormParam是否为空来输入FormParam?

时间:2014-09-17 10:49:04

标签: jsp rest jersey

我有一个JSP,我通过它将一些表单参数发布到REST资源服务“HandlerAPI.executeQuery”。

POST请求的JSP如下:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<form id="form1"  action="rest/HandlerAPI" method="post" >
<select id="type1" name="type1">
<option value="Option1">Option1</option>
<option value="Option2">Option2</option>
<option value="Option3">Option3</option>
<option value="Option4">Option4</option>
<option value="Option5">Option5</option>
</select>
<p><p/>
<fieldset>
<legend>Enter query or input file:</legend>
Enter the query:
<textarea id="type2" name="type2" cols="50" rows="10"></textarea>
<p><p/>
Enter the location of input file:
<input type="file" id="type3" name="type3"></input> 
<input type="submit" value="Submit"/>
</fieldset>
</form>
<script>
$(document).ready(function() {
    $('#type2').keyup(function(e) {
        if($(this).val() != '') {
            $(":file").not(this).attr('disabled','disabled');
        } else {
            $(this).removeAttr('disabled');
            $(":file").removeAttr('disabled');
        }
    });
    $(":file").change(function(e) {
        var files = e.target.files;
        if($(":file").val() != '') {
            $("#type2").not(this).attr('disabled','disabled');
        } else {
            $(":file").removeAttr('disabled');
            $("#type2").removeAttr('disabled');
        }
    });
});
</script>
</body>
</html>

资源服务方法如下:

@Path("/HandlerAPI")
public class HandlerAPI extends PackagesResourceConfig {
    ...
@POST
@Path("/{type1}/({type2}|{type3})")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_PLAIN)

public String executeQuery(@FormParam("type1") String type1, @FormParam("type2") String type2, @FormParam("type3") String type3) {
    //service implemented here
return "Query successfully executed.";

}

我的要求是:

  1. “type3”如果“type2”,FormParam将被传递给服务方法 FormParam为空
  2. “type3”如果“type2”FormParam非空,则不会将FormParam传递给服务方法
  3. 因此,我的带注释的@Path url将进行调整。

    任何有用的建议都将受到赞赏和奖励。

    谢谢

0 个答案:

没有答案