Pregunta

Estoy utilizando Web Flow 2.0.7 con Spring MVC y de hibernación.

Mi problema es sobre los convertidores personalizados para mis tipos personalizados y conexión de base de datos desde dentro de mi convertidor.

Vamos a decir que tengo un tipo persona y persona tiene un campo de mi tipo personalizado Título , y todos Títulos ya están en mi base de datos. Ahora tengo un formulario HTML, en el que un usuario puede rellenar un persona ejemplo, incluyendo la selección de la Título en una caja de selección desplegable.

En la definición de flujo consigo todos los Títulos en la base de datos y que se muestran en el cuadro desplegable utilizando un convertidor de costumbre, la conversión de Título a Cadena y luego de nuevo a Título .

Mi pregunta es sobre el proceso de conversión de vuelta de Cadena (que es el identificador de base de datos, la cual di como valor en el elemento) a la correcta Título objeto de mi base de datos. Básicamente:? ¿Cómo hacerlo?

Hasta ahora, he podido obtener una titleManager inyectado en mi convertidor para obtener acceso a la base de datos. Este escenario se ha comentado en el primavera Web Flow Foro . Otra solución podría ser almacenar en caché los Títulos antes de renderizar la vista y de alguna manera conseguir el en memoria Título después de que el formulario de publicación.

Realmente agradecería que, si alguien podría iluminar, cómo manejar este tipo de enlace de datos. No he podido hacerlo funcionar hasta el momento y por lo tanto, me sale un uso mínimo de los webflows otra manera impresionante.

un hilo en la Junta Web Flow , pero aún la falta de un mejor pratice, que no soy capaz de encontrar por mí mismo.

Muchas gracias!

Wolfram

¿Fue útil?

Solución

utilizo para hacer esto. Básicamente me carga la lista de títulos y lo puse en mi modelo de formulario. En el modelo de formulario también tengo una variable currentTitleId o selectedTitleId para almacenar el valor del elemento seleccionado. Este nombre de campo se encuentra en el "camino" del cuadro combinado de la primavera y el ListaTítulos se encuentra en los "elementos". A continuación, el valor que desea enlazar se encuentra en el "ItemValue" y el texto que se muestra para ese valor de "itemLabel". Eso es todo.

En mi modelo de formulario:

private int currentTitleId;
public long getCurrentTitleId() { return this.currentTitleId; }
public void setCurrentTitleId(long currentTitleId) { this.currentTitleId = currentTitleId; }

List titleList = getTitlesFromMyDatabaseHereOrSomewhereElse();

En mi JSP:

<form:label path="currentTitleId">Title</form:label>
<form:select path="currentTitleId" items="${formModel.titleList}" itemLabel="titleDescription" itemValue="titleId" />

Asumo que su clase Título será algo como esto:

class Title {
    public long getTitleId() { return this.titleId; }
    public long getTitleDescription() { return this.titleDescription; }
}

También puede personalizar que COMBOBOX un poco más como esto:

    <form:select path="currentPhoneNumberId">
    <form:option value="">-</form:option>
    <c:forEach items="${formModel.phoneList}" var="phone">
        <form:option value="${phone.phoneNumberId}">${phone.phoneNumberId} - ${phone.description}</form:option>
    </c:forEach>
</form:select>

Otros consejos

No estoy tan seguro de Spring Web Flow, pero con la MVC normal de primavera Es suficiente para registrar una nueva PropertyEditor y luego esto funciona de forma automática

http : //static.springframework.org/spring/docs/2.5.x/reference/validation.html#beans-beans-conversion-customeditor-registration

http: // estática .springframework.org / resorte / docs / 2.5.x / referencia / mvc.html # mvc-ann-webdatabinder

Así que me gustaría crear un nuevo PropertyEditor que recibe un servicio o DAO, que sería responsable de que los datos de la base, y dentro de la PropertyEditor que convertiría la identificación a su tipo de clave y obtener el valor de la base de datos y de retorno eso. Yo no tengo un ejemplo bien conmigo, pero espero que obtiene la esencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top