Documentation Index
Fetch the complete documentation index at: https://mintlify.com/17Franco/CulturarteWeb/llms.txt
Use this file to discover all available pages before exploring further.
The /DetallesDePropuesta servlet is the single-proposal detail page of CulturarteWeb. A GET request resolves the requested proposal from SOAP, determines the current user’s permissions over that proposal, checks whether it is marked as a favourite, and forwards all enriched data to MostrarPropuesta_Colaborar.jsp. A POST request on the same URL handles in-page actions (collaborate, comment, cancel, extend) and then redirects back to the same GET.
GET /DetallesDePropuesta
Request parameters
The title of the proposal to display. Despite the name id, the parameter holds the proposal title string, which is the primary key used throughout the system. The servlet calls controllerPort.getPropuestaDTO(id) with this value.
Session & visitor handling
The servlet calls request.getSession(true), so a session is always created if one does not exist. User identity is resolved as follows:
| Session state | Resolved nick | Behaviour |
|---|
logueado attribute present | Value of logueado | Full permission check applied |
No logueado attribute | "VISITANTE" | Permissions default to 0 (read-only) |
Permission codes
The servlet calls controllerPort.accionSobrePropuesta(nickUsr, propuestaTitulo) and stores the result as the permisos attribute. The JSP interprets these codes:
| Code | Meaning |
|---|
0 | Visitor or no action available |
1 | Proponent of this proposal (can cancel/extend from the detail page) |
2 | Collaborator who has already paid (can comment when FINANCIADA) |
3 | Eligible collaborator (can submit a collaboration) |
4 | Collaborator with pending payment (shown payment button) |
Additional overrides applied by the servlet:
- If
permisos == 3 and tipoUsuario is "Proponente", permissions are forced to 0 (a proponent cannot collaborate on other proposals via this page).
- If
estadoAct is "CANCELADA", permissions are forced to 0 for all users.
Favourite status
For every request (including visitors), the servlet calls controllerPort.esFavorita(nickUsr, propuesta.getTitulo()) and stores the boolean result. Visitors receive a nick of "VISITANTE", so the SOAP call is made but the favourite button is only rendered by the JSP for logged-in users.
The raw SOAP enum value is converted to a human-readable label before being stored in estadoFormateado:
| Raw state | Displayed label |
|---|
INGRESADA | Ingresada |
PUBLICADA | Publicada |
EN_FINANCIACION | En financiación |
FINANCIADA | Financiada |
NO_FINANCIADA | No financiada |
CANCELADA | Cancelada |
| (other) | Desconocido |
Request attributes set for the view
| Attribute | Type | Description |
|---|
propuesta | DtoPropuesta | Full proposal data object |
permisos | int | Permission code for the current user |
esFavorita | boolean | Whether the proposal is in the current user’s favourites |
estadoFormateado | String | Human-readable proposal state label |
tipoUsuario | String | User type from session ("Proponente", "Colaborador", or null) |
The servlet forwards to /MostrarPropuesta_Colaborar.jsp.
On error (servlet or IO exception), the request attribute mensaje_error is set and the same JSP is shown with an error banner.
POST /DetallesDePropuesta
Handles interactive actions from MostrarPropuesta_Colaborar.jsp. The accion hidden field drives the operation:
accion value | Operation | Result code |
|---|
COMENTAR | Collaborator posts a comment (only allowed when FINANCIADA) | 1 |
CANCELAR | Proponent cancels the proposal | 2 |
EXTENDER | Proponent extends financing deadline | 3 |
COLABORAR | New collaborator submits a funding contribution | 4 |
On completion the servlet redirects to:
GET /DetallesDePropuesta?id=<encodedTitle>&resultadoOperacion=<code>&accionLograda=<label>
The JSP reads resultadoOperacion and accionLograda from the query string to display a success or error banner.
The POST path calls controllerPort.accionesSobrePropuesta(...) on the SOAP service, which handles all business rule enforcement (e.g., preventing double-collaboration, enforcing minimum amounts). The servlet itself does not duplicate those checks.
Example
View proposal details as a visitor
curl -i "http://localhost:8080/CulturarteWeb/DetallesDePropuesta?id=Festival%20de%20Jazz%20Montevideo"
View as a logged-in user
curl -i "http://localhost:8080/CulturarteWeb/DetallesDePropuesta?id=Festival%20de%20Jazz%20Montevideo" \
--cookie "JSESSIONID=<your-session-id>"
Proposal titles may contain spaces and special characters. Always URL-encode the id parameter. The servlet uses URLEncoder.encode(titulo, "UTF-8") when building redirect URLs internally.