2012-11-15 2 views
2

제출 된 URL에 검색 쿼리를 넣을 JSP로 간단한 폼을 설정하려고합니다.특정 경로에 쿼리를 제출하는 jsp 폼이 필요합니다.

이것은 내가 지금까지 무엇을 가지고 :

<form action="search/" method="get" onsubmit="this.action+=this.q.value.trim();return true"> 
    <input type="text" id="q"> 
    <input type="submit" value="go"> 
</form> 

이 내 웹 응용 프로그램의 각 페이지에 포함 된 것는 JSP에 내가 응용 프로그램의 루트에있을 때 작동. 예를 들어 처음에 "http : // localhost : 8080/MyApp /"를로드 한 다음 검색 양식에 "123456"을 입력하면 "http : // localhost : 8080/MyApp/search/123456"로 이동합니다. 내가 원하는거야. 그러나 해당 페이지에서 다시 검색하면 (예 : "654321") "http : // localhost : 8080/MyApp/search/search/654321"로 이동하여 저에게 적합하지 않습니다. 내가 검색/{검색어}는 응용 프로그램의 경로의 뿌리에 내가 어떤 페이지에 상관없이 그 시간에 추가 할 수 추가해야합니다.

가능하면 Javascript를 피하고 싶습니다. JSTL에서는 괜찮습니다.

모든 의견을 보내 주시면 감사하겠습니다.

+0

+ =를 사용하는 이유는 무엇입니까? try this.action + this.q.value.trim(); return true – Don

+0

"="을 사용하면 작동하지 않습니다. URL에 쿼리를 넣지 않아도 "../search"로 연결됩니다. –

답변

0

작업의 전체 경로를 /로 시작하기 만하면됩니다. 응용 프로그램 컨텍스트에 따라 달라 지므로 다음과 같이 사용하십시오.

<form action="${pageContext.request.contextPath}/search/"... 

개발자가 작동 할 수도 있습니다.

편집 :

경로 : http://domain.com/contact/search/ 는 경로 : 노력할 것/검색 그렇게 도메인에서 상대로드 : 검색 그래서 현재 경로에서 상대로드하려고합니다 위의 컨텍스트 경로와 http://domain.com/

, 그것은 dev에서 prod로 바뀌어도 상관 없습니다.

희망이 도움이됩니다.

+0

"localhost : 8080/MyApp/search/123456"이 아니라 "localhost : 8080/search/123456"이 필요하기 때문에이 방법이 도움이됩니다. 내 앱의 이름을 다음과 같이 하드 코딩하면

+0

31 분 전에 조치를 업데이트했습니다 ... 실수를 저 지르셨습니까? 일반적으로 $ {} 부분은 "MyApp"를 인쇄해야합니다. –

+0

필자는 JSF가 더 많습니다. EL에서 연락을 취하는 방법이 있는지에 대해서는 약간의 차이가있을 수 있습니다. $ {pageContext.request.contextPath} –

관련 문제