Are you trying to do this inside Web Content Template? In that case it will not work because you do not have access to the real http request object. You need to create this link using javascript instead. Here is a code snippet.
<script type="text/javascript">
function createURL() {
AUI().ready('liferay-portlet-url', function(A) {
var renderURL = Liferay.PortletURL.createRenderURL();
renderURL.setParameter("struts_action","/asset_publisher/applyForJob");
renderURL.setPortletId("1");
renderURL.setPortletMode("view");
renderURL.setWindowState("normal");
window.location = renderURL.toString();
});
}
</script>
<a href="javascript: createURL(); ">Go</a>