I don't know why you use:
# HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
#
String filename =request.getParameter("userImageFileName");
# int id =Integer.parseInt(request.getParameter("id"));
when the easy way to do this is only creating an attribute in action with a getter, and setter if you need it, with the same name that you have in the jsp:
# <s:param name="userImageFileName" value="%{userImageFileName}"></s:param> <--
# <s:param name="id" value="%{id}"></s:param></s:url> <--
# <s:a href="%{fileDownload}"><s:property value="userImageFileName" /></s:a>
<s:a href="%{fileDownload}?userImageFileName=<s:property value="userImageFileName" />&id=<s:property value="id" />">
OR
<s:a href="%{fileDownload}?userImageFileName=document.getElementsByName('userImageFileName')[0].value&id=document.getElementsByName('id')[0].value"><s:property value="userImageFileName" /></s:a>
I hope that it was useful for you.