我想要从给定的url中获取查询字符串的传递值,比如:http://localhost:8080/app?contentid=10我想从spring控制器中的上述url中获取contentid is: 10的值,我该如何获取呢?
请注意,如果我在那里传递任何值(比如10,50,100,200,...etc -它可以是任何数字),所以无论我传递给contentid的是什么,这个值都应该进入我的控制器。我只想从那个url获取这个HTML值,而不是从我的contentid页面,或者我不想从我的html页面传递。目前我在控制器中从下面的代码中获得null,我没有得到传递的值(比如从url中得到10 )。我如何才能做到这一点?提前感谢您的帮助!
app.html:
<form action="#" th:action="@{/app}" th:object="${TestData}" method="post">
<div class="form-group">
<label for="firstname">First Name: </label> <input type="text"
class="form-control" id="firstname" name="firstname" ></textarea>
</div>
<div class="form-group">
<label for="secondname">Second Name:</label> <input type="text"
class="form-control" id="secondname" name="secondname" />
</div>
<button type="submit" value="Submit">Submit</button>
</form>TestData.java:
public class TestData implements Serializable{
private String firstname;
private String secondname;
private int contentid;
//setters and getters
public TestData() {}
public TestData(String firstname, String secondname, int contentid, ){
this.firstname = firstname;
this.secondname = secondname;
this.contentid = contentid;
}
@Override
public String toString() {
return String.format(
"TestData[firstname=%s, secondname=%s, contentid=%d]",
firstname, secondname, contentid);
}
}控制器:
public class TestDataController {
@Autowired
TestService testDataService;
@RequestMapping(value="/app", method=RequestMethod.POST)
public String testDataSubmit(@RequestParam(required=false) Integer contentid, @ModelAttribute TestData testData, Model model, HttpServletRequest request) {
String id = request.getQueryString();
System.out.println("My Id: "+id);//null
System.out.println("URL Parameter: "+testData.getContentid());//0
System.out.println("URL Parameter passed objectid: "+contentid); //null
testDataService.saveTestDataDetails(testData);
return "app";
}
}服务:
@Service
public class TestService {
@PersistenceContext
private EntityManager entityManager;
public void saveTestDataDetails(TestData testData) {
StoredProcedureQuery sp = entityManager.createStoredProcedureQuery("APP.TESTDATA");
sp.registerStoredProcedureParameter("firstname", String.class, ParameterMode.IN);
sp.registerStoredProcedureParameter("secondname", Integer.class, ParameterMode.IN);
sp.registerStoredProcedureParameter("contentid", Integer.class, ParameterMode.IN);
sp.setParameter("firstname", testData.getFirstname());
sp.setParameter("secondname", testData.getSecondname());
sp.setParameter("contentid", testData.getContentid());
sp.execute();
}
}发布于 2018-02-02 15:55:08
首先,更改html代码th:action="@{/app?contentid=10},然后为类TestData中的实例变量添加setter和getter方法。
https://stackoverflow.com/questions/48577315
复制相似问题