NIHVIVO-3288 fix URL-building bug in OperationController

This commit is contained in:
brianjlowe 2011-11-07 19:16:50 +00:00
parent 46ee0b3a84
commit 4f177c31c9
2 changed files with 17 additions and 9 deletions

View file

@ -108,7 +108,7 @@ public class OperationController extends BaseEditController {
//if validation failed, go back to the form controller //if validation failed, go back to the form controller
if (!valid){ if (!valid){
retry(request,response); retry(request, response, epo);
return; return;
} }
@ -116,7 +116,7 @@ public class OperationController extends BaseEditController {
boolean status = performEdit(epo, newObj, action); boolean status = performEdit(epo, newObj, action);
if (status == FAILURE) { if (status == FAILURE) {
retry(request,response); retry(request, response, epo);
return; return;
} }
@ -166,7 +166,7 @@ public class OperationController extends BaseEditController {
epo.setAttribute("globalErrorMsg", errMsg); epo.setAttribute("globalErrorMsg", errMsg);
try { try {
retry(request, response); retry(request, response, epo);
return; return;
} catch (IOException ioe) { } catch (IOException ioe) {
log.error(this.getClass().getName() + " IOError on redirect: ", ioe); log.error(this.getClass().getName() + " IOError on redirect: ", ioe);
@ -174,18 +174,27 @@ public class OperationController extends BaseEditController {
} }
} }
private void retry(HttpServletRequest request, HttpServletResponse response) throws IOException { private void retry(HttpServletRequest request,
HttpServletResponse response,
EditProcessObject epo) throws IOException {
String referer = request.getHeader("Referer"); String referer = request.getHeader("Referer");
referer = (referer == null) ? epo.getReferer() : referer;
if( referer != null ){ if( referer != null ){
int epoKeyIndex = referer.indexOf("_epoKey"); int epoKeyIndex = referer.indexOf("_epoKey");
if (epoKeyIndex >= 0){ if (epoKeyIndex >= 0){
String url = referer.substring(0,epoKeyIndex) + "_epoKey="+request.getParameter("_epoKey"); String url = referer.substring(0,epoKeyIndex) + "_epoKey=" +
request.getParameter("_epoKey");
response.sendRedirect(url); response.sendRedirect(url);
return; return;
} }
String redirectUrl = (referer.indexOf("?") > -1)
? referer + "&"
: referer + "?";
redirectUrl += "_epoKey="+request.getParameter("_epoKey");
response.sendRedirect(redirectUrl);
} else {
response.sendRedirect(getDefaultLandingPage(request));
} }
response.sendRedirect(referer+"&_epoKey="+request.getParameter("_epoKey"));
return; return;
} }

View file

@ -41,7 +41,6 @@
<select name="Namespace"><form:option name="Namespace"/></select> <select name="Namespace"><form:option name="Namespace"/></select>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
<span class="warning"><form:error name="Namespace"/></span>
</td> </td>
<td valign="bottom" colspan="1"> <td valign="bottom" colspan="1">
<b>Internal Name</b><br/> <b>Internal Name</b><br/>
@ -55,7 +54,7 @@
<input name="LocalName" value="${formValue['LocalName']}" style="width:90%"/> <input name="LocalName" value="${formValue['LocalName']}" style="width:90%"/>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
<span class="warning"><form:error name="LocalName"/></span> <span class="notice"><form:error name="LocalName"/></span>
</td> </td>
</tr> </tr>
<tr class="editformcell"> <tr class="editformcell">