Skip to main content

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

id
string
required
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 stateResolved nickBehaviour
logueado attribute presentValue of logueadoFull 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:
CodeMeaning
0Visitor or no action available
1Proponent of this proposal (can cancel/extend from the detail page)
2Collaborator who has already paid (can comment when FINANCIADA)
3Eligible collaborator (can submit a collaboration)
4Collaborator 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.

State formatting

The raw SOAP enum value is converted to a human-readable label before being stored in estadoFormateado:
Raw stateDisplayed 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

AttributeTypeDescription
propuestaDtoPropuestaFull proposal data object
permisosintPermission code for the current user
esFavoritabooleanWhether the proposal is in the current user’s favourites
estadoFormateadoStringHuman-readable proposal state label
tipoUsuarioStringUser 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 valueOperationResult code
COMENTARCollaborator posts a comment (only allowed when FINANCIADA)1
CANCELARProponent cancels the proposal2
EXTENDERProponent extends financing deadline3
COLABORARNew collaborator submits a funding contribution4
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.

Build docs developers (and LLMs) love