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 (!valid){
retry(request,response);
retry(request, response, epo);
return;
}
@ -116,7 +116,7 @@ public class OperationController extends BaseEditController {
boolean status = performEdit(epo, newObj, action);
if (status == FAILURE) {
retry(request,response);
retry(request, response, epo);
return;
}
@ -166,7 +166,7 @@ public class OperationController extends BaseEditController {
epo.setAttribute("globalErrorMsg", errMsg);
try {
retry(request, response);
retry(request, response, epo);
return;
} catch (IOException 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");
referer = (referer == null) ? epo.getReferer() : referer;
if( referer != null ){
int epoKeyIndex = referer.indexOf("_epoKey");
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);
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;
}

View file

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