Consegui solucionar o caso para displaytags…
a solução foi não utilizar ajaxtags e sim jquery e montar links que atualizem divs com a própria jquery e nao com o struts 2…
portanto, para funcionar corretamente, basta fazer o seguinte…
crie um arquivo javascript com o seguinte conteúdo (este arquivo terá a mesma função que a tag ajax:displaytag do ajaxtags):
function changeLinks()
{
done=true;
var linkData, queryArr, action, qryStr;
selector = 'span.pagelinks>a';
changeUsingSelector(selector);
selector = 'table#dispTable>thead>tr>th>a';
changeUsingSelector(selector);
}
function changeUsingSelector(selector)
{
$(selector).each(function()
{
linkData = $(this).attr("href");
queryArr = linkData.split("?");
action = queryArr[0];
qryStr = queryArr[1];
newStr = "JavaScript:doAjax('"+action+"','"+qryStr+"','ajxDspId');";
$(this).attr("href",newStr);
$(this).attr("onMouseOver","window.status='Pagination Links have been Ajaxified!!';return false;");
$(this).attr("onMouseOut","window.status='';return false;");
});
}
jQuery(function($) {
changeLinks();
});
function doAjax(url, data, eleId)
{
//if you need additional params to be passed - add to the data variable
$.ajax
({
url: url,
data: data,
async: false,
success: function(resp){
var d = $(resp);
htmlStr="";
for(i=0;i<d.length;i++)
{
var node = d[i];
if (node.id == eleId)
{
htmlStr=$(node).html();
break;
}
}
$('#'+eleId).html(htmlStr);
changeLinks();
}
});
}
inclua este arquivo no seu jsp que contém a displaytag, juntamente com o jquery.js (arquivo necessário para utilizar jquery):
<script src="${pageContext.request.contextPath}/js/jquery.js" type="text/javascript"></script>
<script src="${pageContext.request.contextPath}/js/displayTagAjax.js" type="text/javascript"></script>
Agora, basta seguir as seguintes regras para a displaytag:
Ela deve estar dentro de uma div chamada ajxDspId e seu id deve ser dispTable:
<div id="ajxDspId">
<display:table id="dispTable" name="lista" class="displaytag".....>
</div>
Feito isso, o ajax fará com que a página inteira não seja recarregada ao paginar e ordenar a tabela…
Para fazer os links faça o seguinte…
crie na sua página o seguinte script:
<script>
function link(id){
$.get('${pageContext.request.contextPath}/editarBonus.action?id=' + id, function(data){
$("#cadastro").html(data)
});
}
</script>
sendo que aonde está #cadastro, substitua por #div_a_ser_carregado e o primeiro parametro de get deve ser o local em que sua action está. (O parametro de entrada id é opcional. ele é utilizado apenas para passar parametros na chamada da action)
agora basta fazer um link dentro da displaytag chamando esta função:
<display:column>
<a href="#" onclick="link('parametroParaChamarAction');">link</a>
</display:column>
Feito isso, você terá uma displaytag funcionando perfeitamente com ajax, e com a possibilidade de atualizar divs sem problemas…