Domanda

Il contactAddModel.Search arriva sempre attraverso nullo - tutte le idee

Visualizza dichiarazione

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<rs30UserWeb.Models.StatusIndexModel>" %>

ViewModels

public class StatusIndexModel
{
    public ContactAddModel contactAddModel;
    public StatusMessageModel statusMessageModel;
}

public class ContactAddModel
{
    [Required(ErrorMessage="Contact search string")]
    [DisplayName("Contact Search")]
    public string Search { get; set; }
}

Visualizza contenuti

<%  using (Html.BeginForm("AddContact", "Status")) { %>
    <div>
        <fieldset>
            <legend>Add a new Contact</legend>

            <div class="editor-label">
                <%= Html.LabelFor(m => m.contactAddModel.Search) %>
            </div>
            <div class="editor-field">
                <%= Html.TextBoxFor(m => m.contactAddModel.Search)%>
                <%= Html.ValidationMessageFor(m => m.contactAddModel.Search)%>
            </div>

            <p>
                <input type="submit" value="Add Contact" />
            </p>
        </fieldset>
    </div>
<% } %>

Regolatore

    [HttpPost]
    public ActionResult AddContact(Models.ContactAddModel model)
    {
        if (u != null)
        {
        }
        else
        {
            ModelState.AddModelError("contactAddModel.Search", "User not found");
        }

        return View("Index");
    }
È stato utile?

Soluzione

Penso che il problema con Collections.shuffle() è che è utilizzata predefinita Random istanza che è un singleton sicuro del filo. Dici che il tuo programma è multi-threading, quindi posso immaginare la sincronizzazione in Random essere un collo della bottiglia.

Se sei felicemente in esecuzione su Java 7, usa semplicemente ThreadLocalRandom . Guarda attentamente, c'è una versione di shuffle() Prendendo l'istanza Random esplicitamente:

Collections.shuffle(arr, threadLocalRandom);
.

Dove viene creato threadLocalRandom solo una volta.

On Java 6 è possibile semplicemente creare una singola istanza di Random una volta per thread. Si noti che non è necessario creare una nuova istanza di Random per esecuzione, a meno che non si possa fornire semi casuali ogni volta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top