JAVAWeb - Como mostrar espaços em branco a esquerda nos valores de uma tabela?

Preciso fazer uma identação em uma dataTable para que fique de acordo com essa (versão de uma aplicação desktop):

O campo nivel representa a quantidade de espaços a esquerda de cada nome.
O método que uso para colocar os espaços está abaixo, o problema é que no xhtml/html esses espaços não são reconhecidos, pensei em usar algo com a entidade &nbsp, mas não sei como fazer, se alguém puder me dar uma luz, ficarei grato…

MÉTODO QUE CONCATENA OS ESPAÇOS DE ACORDO COM O NIVEL:

 public void formataNome() {
        nomeFormatado = new Uteis().constStr(" ",2*(--nivel)) + nome;
}      

public String constStr(String caracter, int n) {
            String s = String.valueOf(caracter);
            for (int i=s.length(); i<n; i++) {
                s = s + caracter;
            }
            return s;
        }

Se for em web, você precisará utilizar o pseudo elemento &nbsp;

<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Este&nbsp;&nbsp;&nbsp;texto&nbsp;&nbsp;&nbsp;possui&nbsp;&nbsp;&nbsp;três&nbsp;&nbsp;&nbsp;espaços
</p>

Saída:
      Este   texto   possui   três   espaços

Certo, foi o que eu pensei também, porém como falei cada registro da tabela possui um nivel, que representa a quantidade de espaços a esquerda, haveria alguma forma de fazer a concatenação do subelemento &nbsp; no método que mostrei acima?

Sim, há.

Dê um exemplo, está faltando o seu exemplo melhor por favor!

Eu não sei muito bem, não sou bom em CSS, me parece não ser recomendável utilizar esse &nbsp; por causa dá diferença dependendo do navegadores de espaço e tamanho, etc … seria bom ser feito acredito eu com uma estrutura melhor de div ou table talvez. Apesar que a explicação dele está ao meu entender muito vaga!

Com CSS ele pode utilizar o padding-left, com certeza.
A questão é ele conseguir colocar isso numa lógica que faça sentido, afinal, ele está com dificuldades justamente nessa parte.

Eu queria que a minha tabela que estava mostrando os dados dessa forma:

Mostrasse dessa forma:

Eu tentei concatenar o subelemento &nbsp com o nome(string), porém o que era me mostrado na tela não era espaço e sim a string &nbsp+nome, então usei o literal unicode \u00A0 e funcionou perfeitamente, mas gostaria de saber se usar isso é correto ou não?

RESULTADO:

A dica que eu daria:

Criar um CSS de 1 a 10 (ou mais dependendo da sua necessidade) e com a ideia do @Luis_Augusto_Santos utilize o padding-left para empurrar da margen da tabela pra dentro, exemplo:

.css-1 {
    padding-left: 10px;
}

.css-2 {
    padding-left: 20px;
}

.css-3 {
    padding-left: 30px;
}

Exemplo ONLINE

Amigo se está usando primefaces. Você está reinventando a roda.

https://www.primefaces.org/showcase/ui/data/treetable/basic.xhtml