Faits : A. U._ SRL est une société à responsabilité limitée enregistrée en Italie. Au mois d'août 2004, A._ et B._ lui ont passé commande de fournitures destinées à un bâtiment alors en construction à Denens. Le 19 juin 2008, U._ SRL a ouvert action contre eux devant le Président du Tribunal civil de l'arrondissement de La Côte; elle leur réclamait paiement de 12'641,60 euros avec intérêts au taux de 5% par an dès le 24 septembre 2004. Le juge saisi s'est prononcé le 17 mai 2010; il a rejeté l'action. Ce jugement a été communiqué par notification de son dispositif écrit; une requête de motivation a été introduite puis retirée. Le jugement n'a pas été contesté. B. Le 15 juin 2011, sur réquisitions de U._ SRL, l'office des poursuites du district de Morges a notifié deux commandements de payer la somme de 20'312 fr.70 avec intérêts au taux de 5% par an dès le 24 septembre 2004, l'un dans la poursuite n°...7 entreprise contre A._, l'autre dans la poursuite n°...8 entreprise contre B._. Sous la rubrique « titre de la créance ou cause de l'obligation », ces commandements de payer mentionnaient une prétention en restitution de l'enrichissement illégitime au montant de 12'641,60 euros, convertie en francs suisses. Les débiteurs poursuivis ont tous deux formé opposition. Le 23 septembre 2011, ils ont conjointement ouvert action contre U._ SRL devant le Tribunal civil de l'arrondissement. En substance, d'après les conclusions présentées, ce tribunal était requis de prononcer que les sommes réclamées n'étaient pas dues, d'une part, et d'ordonner la radiation des poursuites, d'autre part. La défenderesse a conclu au rejet de l'action et elle a présenté des conclusions reconventionnelles: les défendeurs devaient être condamnés à payer les sommes réclamées par voie de poursuite et leurs oppositions aux commandements de payer devaient être définitivement levées. Par un jugement du 8 mai 2012, le Président du Tribunal civil a prononcé que les conclusions reconventionnelles étaient irrecevables parce qu'incompatibles avec l'autorité du jugement intervenu le 17 mai 2010. C. La défenderesse a retiré les deux poursuites nos...7 et...8; le même jour, soit le 8 mars 2013, elle a requis le Président d'annuler l'audience fixée au 12 du même mois et de rayer la cause de son rôle. Les demandeurs ont déclaré s'opposer à cette requête et persister dans leurs conclusions tendant à faire prononcer que les sommes en cause n'étaient pas dues. Par un prononcé du 14 mai 2013, le Président a refusé de rayer la cause de son rôle; il a considéré que les demandeurs conservaient un intérêt à faire constater en justice, le cas échéant, que les sommes en cause n'étaient pas dues. Après divers autres incidents, le Tribunal civil a rendu un jugement final le 24 avril 2015. Il a prononcé que les demandeurs n'étaient pas débiteurs des montants réclamés dans les poursuites nos...7 et...8, ni d'aucun autre montant. La défenderesse est condamnée aux frais de l'instance, arrêtés à 9'533 fr.35, et aux dépens des demandeurs, arrêtés à 15'340 fr., y compris les frais et dépens des procédures incidentes. La Cour d'appel civile du Tribunal cantonal a statué le 15 février 2016 sur l'appel de la défenderesse; elle a rejeté l'appel et confirmé le jugement. D. Agissant par la voie du recours en matière civile, la défenderesse requiert le Tribunal fédéral de réformer l'arrêt de la Cour d'appel en ce sens que la demande introduite devant le Tribunal civil le 23 septembre 2011 soit déclarée irrecevable. A titre subsidiaire, le Tribunal fédéral est requis de réformer l'arrêt attaqué en ce sens que les frais de première instance soient réduits de 9'533 fr.35 à 2'100 francs. Les demandeurs concluent au rejet du recours. La défenderesse a spontanément déposé une réplique qui a été transmise aux demandeurs; ceux-ci n'ont pas déposé d'écriture supplémentaire.